وقتی قرارداد میگه بازه صفر تا صد شامل دو سر، خود صفر و خود صد باید حتماً آزمون بشن. عدد پنجاه فقط داخل بازه رو میسنجه و فرق بازه باز و بسته رو نشان نمیده. اطراف مرز هم مفیده: منفی یک و صدویک باید رد بشن، درحالیکه صفر و صد پذیرفته میشن. این مجموعه کوچک، معنی شرط رو خیلی دقیقتر از چند عدد تصادفی بیان میکنه.
مثال مرزهای مجاز یک ظرفیت دهتایی رو میسنجه. فعالیت دو نسخه خراب داره که هرکدوم یکی از مرزها رو حذف کرده. خطای رایج استفاده از انتظار False برای همه عددهای «لبه» است؛ لبه همیشه نامعتبر نیست و باید جمله مسئله رو بخونی. تستهای تو یک تابع ورودی رو میسنجن، پس نباید خودت نتیجه رو فقط از روی نام candidate بسازی. هر assert باید فراخوانی واقعی داشته باشه. برای منفی یک و صدویک هم انتظار بولی بده؛ این تابع اعتبارسنجی فقط True/False برمیگردونه و استثنا قراردادش نیست.
✍️ مثال حلشده:
def within_capacity(value):
return 0 <= value <= 10
assert within_capacity(0) is True
assert within_capacity(10) is True
assert within_capacity(11) is False
حالا نوبت توئه: test_candidate(candidate) را برای تابع اعتبار امتیاز در بازه بسته ۰ تا ۱۰۰ بنویس. ورودیهای 0،100،50 باید True و -1،101 باید False شوند. run_tests("correct") باید True و excludes_lower و excludes_upper باید False باشند. wrapper را حفظ کن؛ candidate استثنا نمیدهد و خروجی آن بولی است.
فعالیت شما
test_candidate(candidate) را برای تابع اعتبار امتیاز در بازه بسته ۰ تا ۱۰۰ بنویس. ورودیهای 0،100،50 باید True و -1،101 باید False شوند. run_tests("correct") باید True و excludes_lower و excludes_upper باید False باشند. wrapper را حفظ کن؛ candidate استثنا نمیدهد و خروجی آن بولی است.