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

ساخت مجموعه تست پایتون بدون کتابخانه؛ اجرای همه تابع‌های آزمون

آزمون چند تابع و اجرای مجموعه تست پایتون · 0٪

تعریف‌کردن تابع تست به‌تنهایی اون رو اجرا نمی‌کنه. وقتی چند آزمون کوچک داریم، باید یک تابع هماهنگ‌کننده همه‌شون رو صدا بزنه. این مجموعه می‌تونه فقط چند تابع معمولی و assert باشه. هر آزمون مسئول یک خانواده رفتار می‌شه و هماهنگ‌کننده تضمین می‌کنه هیچ بخش مهمی فراموش نشده.

مثال، تست عادی و مرزی یک تابع دوبرابر رو از هم جدا می‌کنه و در run_all هر دو رو اجرا می‌کنه. فعالیت یک تابع جمع داره و باید آزمون معمول، خالی و منفی در مجموعه حضور داشته باشن. خطای رایج نوشتن test_empty بدون پرانتز است؛ اون عبارت فقط به تابع اشاره می‌کنه و فراخوانی نیست. همین‌طور اگر candidate رو به تابع کمکی نفرستی، نسخه آماده موردنظر واقعاً بررسی نمی‌شه. مجموعه درست باید نسخه سالم رو بپذیره و هر نسخه ناقص رو از مسیر تست مرتبط رد کنه. نام‌ها و ساختار پیشنهادی خواندن شکست‌ها رو راحت می‌کنن، ولی معیار اصلی رفتار واقعی مجموعه هنگام اجراست.

✍️ مثال حل‌شده:

def test_normal(candidate):
    assert candidate(3) == 6

def test_zero(candidate):
    assert candidate(0) == 0

def run_all(candidate):
    test_normal(candidate)
    test_zero(candidate)

run_all(lambda value: value * 2)

حالا نوبت توئه: تابع‌های test_normal، test_empty و test_negative را برای جمع فهرست عدد صحیح بنویس و هر سه را از test_candidate(candidate) فراخوانی کن. انتظارها: [2,3,4]=>9، []=>0 و [-4,1]=>-3. run_tests("correct") باید True و empty_bug، negative_bug و first_bug باید False شوند. فقط تعریف تست کافی نیست؛ هماهنگ‌کننده باید آن‌ها را اجرا کند.

فعالیت شما

تابع‌های test_normal، test_empty و test_negative را برای جمع فهرست عدد صحیح بنویس و هر سه را از test_candidate(candidate) فراخوانی کن. انتظارها: [2,3,4]=>9، []=>0 و [-4,1]=>-3. run_tests("correct") باید True و empty_bug، negative_bug و first_bug باید False شوند. فقط تعریف تست کافی نیست؛ هماهنگ‌کننده باید آن‌ها را اجرا کند.

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

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

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

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

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

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

def correct(values):
    return sum(values)

def empty_bug(values):
    return 1 if not values else sum(values)

def negative_bug(values):
    return sum(abs(item) for item in values)

def first_bug(values):
    return values[0] if values else 0

CANDIDATES = {"correct": correct, "empty_bug": empty_bug, "negative_bug": negative_bug, "first_bug": first_bug}

def test_normal(candidate):
    pass

def test_empty(candidate):
    pass

def test_negative(candidate):
    pass

def test_candidate(candidate):
    # هر سه آزمون را اجرا کن
    pass

def run_tests(candidate_name):
    candidate = CANDIDATES[candidate_name]
    try:
        test_candidate(candidate)
        return True
    except Exception:
        return False