پروژه پایانی یک فاکتور ساده است: قیمتها جمع میشن و یک درصد تخفیف روی جمع اعمال میشه. قبل از دستبردن به فرمول، باید یک تست بازتولید داشته باشیم که باگ رو نشان بده. این تست بعد از اصلاح هم باقی میمونه تا همان مشکل برنگرده. عددهای کوچک و قابل حساب ذهنی برای شروع بهتر از یک فاکتور بزرگ و شلوغ هستن.
مثال یک سبد هشتاد واحدی با تخفیف بیستوپنج درصد رو به شصت میرسونه. در پروژه، دو قیمت صد و دویست با ده درصد تخفیف، دویستوهفتاد میشن. خطای رایج کمکردن خود درصد یا درصد تقسیم بر صد از مبلغه؛ باید سهم تخفیف از جمع محاسبه بشه. نسخه دیگری هم فقط اولین قیمت رو میخونه که با تست تکقیمت پنهان میمونه. تست تو باید از همین حالا این دو رفتار خراب رو رد کنه. فعلاً ورودی درصد معتبره؛ رسیدگی به مرزها و خطاها در گامهای بعد پروژه اضافه میشه.
✍️ مثال حلشده:
def discounted(prices, percent):
return sum(prices) * (1 - percent / 100)
assert discounted([30, 50], 25) == 60
حالا نوبت توئه: test_candidate(candidate) را برای بازتولید کامل کن: candidate([100,200],10) باید 270 و candidate([],10) باید 0 باشد. درصدهای این گام معتبرند. run_tests("correct") باید True و wrong_formula و first_price_only باید False شوند. نام نسخهها فقط ورودی wrapper هستند؛ داخل تست باید candidate واقعی اجرا شود و انتظارها مستقل باشند. مبلغ تخفیف در این پروژه همان حاصل عددی فرمول است و گردکردن مالی انجام نمیشود؛ مثالهای آزمون عمداً نتیجه عددی دقیق دارند.
فعالیت شما
test_candidate(candidate) را برای بازتولید کامل کن: candidate([100,200],10) باید 270 و candidate([],10) باید 0 باشد. درصدهای این گام معتبرند. run_tests("correct") باید True و wrong_formula و first_price_only باید False شوند. نام نسخهها فقط ورودی wrapper هستند؛ داخل تست باید candidate واقعی اجرا شود و انتظارها مستقل باشند. مبلغ تخفیف در این پروژه همان حاصل عددی فرمول است و گردکردن مالی انجام نمیشود؛ مثالهای آزمون عمداً نتیجه عددی دقیق دارند.