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 را نگه دار.