سلام رفقا ?
امیدوارم حالتون عالی باشد ...
توی این پست قراره یونیت تست را با هم بررسی کنیم
به زبان ساده ، وقتی ما عملکرد کل کدمون یا قطعه ای از کدمون رو آزمایش کنیم ، در واقع یونیت تست انجام دادیم.
به تعریف ویکی پدیا ، در برنامهنویسی رایانهای، نوعی آزمون نرمافزار است که در آن مورد آزمون قرار میگیرند تا تعیین شود که آیا برای استفاده سازگار هستند یا نه. در اینجا «واحد منفرد کد منبع» یعنی مجموعهای از یک یا بیشتر پودمان برنامه رایانهای، همراه با داده کنترلی مرتبط، رویه استفاده، و رویه عملیاتی.
یونیت تست شاید یکم زمان بر باشد ، اما خیلی شفاف می توانیم تمام ارر های کدمون رو پیدا کنیم.
باید توجه داشته باشیم که لزوما هر ارری اینجوری نیست که خود زبان برنامه نویسی بگه توی خط فلان مشکل دارید.خیلی جاها ما با ارر های منطقی سر و کار داریم که با وجود صحت نوشتار کد اما عملکرد درستی برنامه ما ندارد.
نوشتن یک برنامه ساده
خب قبل از هر چیز باید یک برنامه ساده بنویسیم که بعد اون را تست کنیم ، من یک برنامه با چهار تا تابع ضرب و تقسیم و تفریق و جمع نوشتم.شما می توانید یک برنامه پیچیده تر را بنویسید.
در قدم اول باید فایل یونیت تست خودمون را بسازیم. هر اسمی می توانید انتخاب کنید اما بهتره یک اسم متناسب با فایل اصلی تون انتخاب کنید تا هم خودتون متوجه بشوید هم اگر کدتون رو به دیگران دادید اونا متوجه بشوند.
مثلا اسم فایل اصلی من calculator.py هست و اسم فایل تست رو گذاشتم test_calculator.py شما هم بهتره همین کار رو کنید.
حالا باید فایلی که می خواهید تست کنید رو توی فایل تست ایمپورت کنید. پس واجب شد فایل تستتون کنار فایل اصلی باشد.دلیل ایمپورت کردن فایل اصلی اینه که بتوانید از همه متود های اون استفاده کنید.
قدم سوم : ایمپورت کردن کتابخانه unittest
باید توی فایل تست کتابخانه unittest رو ایمپورت کنیم ، این کتابخانه داخلی پایتون بوده و لازم نیست اون را نصب کنید.
توی ساختار فایل تست باید یک کلاس بسازیم تمام اقدامات ما توی یک کلاس انجام بشود.
اسم این کلاس دست خودمون هست اما بهتره مثل اسم فایل باشد. من اسم این کلاس رو گذاشتم TestCalculator
نکته اینجاست حتما باید این کلاس از کلاس TestCase کتابخانه ارث بری کند تا بتوانیم از متود های مربوط یونیت تست استفاده کنیم.
قدم پنجم : نوشتن متود تست
برای هر متودی که می خواهیم توی فایل اصلی تست کنیم باید یک متود مربوط به تست اون را بنویسیم.
مثلا توی فایل اصلی ما متود add رو داریم ، توی کلاس تست هم باید یک متود مربوط به تست add بنویسیم فرمت نامگذاری حتما باید به این شکل باشد :
test_add ()
این مورد حتما باید رعایت شود وگرنه پایتون این متود شما را به عنوان متود تست برای تابع add نمی شناسد.
حالا ما باید یکسری عدد به تابع add ارسال کنیم و ببینیم آیا حاصل جمع آن با مقدار ریترن شده مطابقت داره یا نه ، اگر مطابقت داشت که یعنی تابع درست کار کرده اگر نه یعنی یک جای کار مشکل دارد.
برای این کار از تابع assertEqual استفاده کنیم این تابع دو تا آرگمان می گیرد و بررسی می کند آیا اون دو تا آرگمان یکسان هستند یا نه
به ادامه کد دقت کنید.
توی تابع test_add گفتم برو به add سه و پنج رو بفرست ، خب add جمع می کند دو تا عدد را ، 3 + 5 می شود 8 پس باید مقدار خروجی تابع 8 باشد.
این کار را هر چند بار دیگه انجام می دهیم ، من جمع اعداد 3 و 5 رو انجام دادم و بعد اعداد منفی با منفی و منفی با مثبت رو هم تست کردم.
خودتون هم می دانید ، چرا self رو گرفتم و از self تابع assertEqual را صدا زدم؛ این بحث بر می گردد به شی گرایی که که نمونه ساخته شده جای self قرار می گیرد...
حالا همین کار رو برای دیگر متود های برنامه calculator خودمون می نویسیم ....
امیدوارم که این پست را دوست داشته باشید ...
منتظر پست بعدی در رابطه با یونیت تست باشید.