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

آموزش fixture در تست پایتون؛ داده نمونه ثابت و قابل اعتماد

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

fixture یعنی داده و وضعیت مشخصی که یک تست از آن شروع می‌شه. برای تست‌های ساده ما، یک فهرست یا دیکشنری کوچک هم می‌تونه fixture باشه. نکته مهم اینه که معلوم باشه پیش از هر تست چه داده‌ای داریم و نتیجه به زمان، اینترنت یا اجرای تست قبلی وابسته نباشه. داده ثابت، تکرار شکست و مقایسه اصلاح‌ها رو قابل اعتماد می‌کنه.

مثال برای یک فهرست کالا، انتظار جمع رو از دو قیمت ثابت تعیین می‌کنه. خطای رایج استفاده از عدد تصادفی بدون ثبت ورودی است؛ اگر شکست فقط گاهی رخ بده و نمونه معلوم نباشه، بازتولید سخت می‌شه. برای تست فعلی به تصادف نیاز نداریم. اگر تابع داده رو تغییر می‌ده، باید قبل از هر تست fixture تازه بسازیم یا کپی مناسب بگیریم. تست نباید ناخواسته آلودگی تست دیگر رو به ارث ببره. اول کوچک‌ترین داده‌ای رو بساز که یک رفتار مشخص رو نشان می‌ده و بعد انتظار مستقلش رو کنار همون نمونه بنویس.

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

def make_prices():
    return [40, 60]

def test_total(candidate):
    prices = make_prices()
    assert candidate(prices) == 100

test_total(sum)

حالا نوبت توئه: نمونه make_numbers هر بار فهرست تازه [2,3] می‌سازد و test_sum آن را برای انتظار 5 استفاده می‌کند. این گام آموزشی است؛ توضیح بده چرا داده تازه و ثابت، تست را از زمان و اجرای قبلی مستقل می‌کند. مقدارهای آزمون را تصادفی نکن و برای هر اجرای تست همان انتظار 5 را نگه دار.

فعالیت شما

نمونه make_numbers هر بار فهرست تازه [2,3] می‌سازد و test_sum آن را برای انتظار 5 استفاده می‌کند. این گام آموزشی است؛ توضیح بده چرا داده تازه و ثابت، تست را از زمان و اجرای قبلی مستقل می‌کند. مقدارهای آزمون را تصادفی نکن و برای هر اجرای تست همان انتظار 5 را نگه دار.

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

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

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

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

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

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

def make_numbers():
    return [2, 3]

def test_sum(candidate):
    numbers = make_numbers()
    assert candidate(numbers) == 5

test_sum(sum)