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

آموزش تست فهرست خالی و تک‌عضوی در پایتون؛ مرز اندازه

تست حالت‌های مرزی و ورودی نامعتبر در پایتون · 0٪

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

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

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

def total(values):
    return sum(values)

assert total([]) == 0
assert total([7]) == 7
assert total([2, 5]) == 7

حالا نوبت توئه: نمونه reverse_items فهرست تازه معکوس برمی‌گرداند؛ []=>[]، [7]=>[7] و [2,5]=>[5,2]. این گام آموزشی است؛ توضیح بده چرا تست خالی، تک‌عضوی و دو‌عضوی هرکدام رفتار متفاوتی را می‌سنجند. خود ورودی نباید تغییر کند و عضوها عدد صحیح‌اند.

فعالیت شما

نمونه reverse_items فهرست تازه معکوس برمی‌گرداند؛ []=>[]، [7]=>[7] و [2,5]=>[5,2]. این گام آموزشی است؛ توضیح بده چرا تست خالی، تک‌عضوی و دو‌عضوی هرکدام رفتار متفاوتی را می‌سنجند. خود ورودی نباید تغییر کند و عضوها عدد صحیح‌اند.

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

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

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

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

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

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

def reverse_items(values):
    return list(reversed(values))

assert reverse_items([]) == []
assert reverse_items([7]) == [7]
assert reverse_items([2, 5]) == [5, 2]