حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

آموزش تست در پایتون؛ تفکیک actual و expected

تست‌نویسی پایتون با assert و آزمون‌های مؤثر · 0٪

یک تست ساده دو طرف داره: رفتار مورد انتظار و رفتاری که واقعاً از اجرای تابع به دست اومده. 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) یک مقایسه مستقل نمی‌سازد و چرا صرف اجرای تابع بدون مقایسه کافی نیست. ورودی صحیح است و استثنایی انتظار نداریم.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def triple(number):
    return number * 3

expected = 12
actual = triple(4)
assert actual == expected