یک تست ساده دو طرف داره: رفتار مورد انتظار و رفتاری که واقعاً از اجرای تابع به دست اومده. expected رو از قرارداد مسئله میگیریم و actual رو از فراخوانی تابع. اگر هر دو رو با همان فرمول پیادهسازی حساب کنیم، ممکنه باگ رو در دو جا تکرار کنیم و تست بیفایده بشه. برای مثالهای کوچک، جواب مورد انتظار رو مستقل و دستی تعیین کن.
در مثال، هزینه ارسال پنج واحده و انتظار برای مبلغ بیست، عدد بیستوپنجه. نتیجه واقعی بعد از صدازدن تابع ثبت میشه. خطای رایج مقایسه تابع با خودش یا نوشتن عدد حدسی بدون مراجعه به قرارداد است. یک اسم روشن برای هر طرف، خواندن شکست رو راحتتر میکنه و نشان میده قرار بوده چه اتفاقی بیفته. تست قرار نیست فقط اجرای بدون خطا رو تأیید کنه؛ باید نتیجه رو هم بسنجه. در این دوره از assert و تابعهای معمولی استفاده میکنیم، پس برای شروع به کتابخانه خارجی یا کلاس تست نیاز نداری.
✍️ مثال حلشده:
def with_shipping(price):
return price + 5
expected = 25
actual = with_shipping(20)
assert actual == expected
حالا نوبت توئه: در مثال تابع triple(4) باید 12 بدهد. actual را نتیجه فراخوانی و expected را عدد مستقل 12 بدان. این گام آموزشی است؛ توضیح بده چرا expected=triple(4) یک مقایسه مستقل نمیسازد و چرا صرف اجرای تابع بدون مقایسه کافی نیست. ورودی صحیح است و استثنایی انتظار نداریم.
فعالیت شما
در مثال تابع triple(4) باید 12 بدهد. actual را نتیجه فراخوانی و expected را عدد مستقل 12 بدان. این گام آموزشی است؛ توضیح بده چرا expected=triple(4) یک مقایسه مستقل نمیسازد و چرا صرف اجرای تابع بدون مقایسه کافی نیست. ورودی صحیح است و استثنایی انتظار نداریم.