سلام رفقا ?
با دومین پست آموزشی یونیت تست در خدمتون هستم ...
اگر پست قبلی رو ندیدید حتما اول اون پست را بخوانید
خب توی جلسه قبلی با assertEqual آشنا شدیم ، اومدیم تابع test_add رو نوشتیم و توی چهار حالت متود add رو تست کردیم.
حالا برای متود تفریق ، تقسیم و ضرب هم همین کار رو می کنیم.
اجرا کردن یک فایل یونیت تست ، با یک کد معمولی متفاوت هست. اگر معمولی کدتون رو اجرا کنید هیچ نتیجه مشاهده نمی کنید برای اجرا فایل یونیت تست 2 روش وجود دارد.
روش اول اینه که برید از طریق خط فرمان وارد دایرکتوری کد مورد نظرتون بشوید و فایل را اجرا کنید با این تفاوت که باید در خط فرمان این کد را مطابق عکس زیر با ماژول unittest اجرا کنید.
روش دوم اینه که این کد را به انتهای کد خودتون اضافه کنید:
این کد مربوط به بخش ماژول ها می شود!
این چهار نقطه ابتدایی ، نشانه درست بودن تست شما هست ، هر چند تابع تست داشته باشید به همون تعداد از این نقاط خواهید داشت. ما الان چهار تا تابع تست نوشتیم و داریم چهار نقطه مشاهده می کنیم!
هر نقطه نشان دهنده درستی تست ما هست مثلا اگر در تابع تست سوم با ارر مواجه بشویم نتیجه به این شکل در می آیید :
می بینید که بعد از 2 نقطه حرف F به معنی فیل بودن تست ما هست ، در ادامه هم جزئیات ارر رو می بینید.
بعد از این چهار نقطه زمان اجرای تست و بعد از آن اگر تمامی تست ها با موفقیت انجام شده باشند ، OK در آخر نتیجه قرار می گیرد.
فرض کنید برنامه ای نوشتید که تحت شرایط خاصی ارر خاصی را اجرا می کند ، چجوری با یونیت تست می توانیم اجرا شدن یک ارر را بررسی کنیم ؟!
تغییری در برنامه اصلی ایجاد می کنیم تا اگر در تابع تقسیم عدد دوم 0 بود ارر بدهد :
حالا باید بگیم اگر توی تابع Division مثلا عدد اول 10 بود و عدد دوم 0 باید ValueError ریز بشود.
این کار را با متود assertRaises به این شکل انجام می دهیم :
در واقع داریم می گوییم اگر تابع Division آرگمان های 25 و 0 باید ValueError داده بشود و همینطور اگر آرگمان های 10 و 0 را دریافت کرد باید ValueError دریافت بشود
نتیجه به شکل بالا هست که در واقع می گویید تست با موفقیت نبوده! طبیعی هم هست چون انتظار داشتیم ارر دریافت کند که دریافت کرد
تابعی هم در کتابخانه یونیت تست وجود دارد تحت عنوان ، assertNotEqual که عکس assertEqual عمل می کند. در این متود اگر مقداری که شما می دهید در آرگمان تابع با مقدار دوم برابر باشد ارر می دهد.
خب دوستان سعی شد که مسائل کاربردی یونیت تست در این دو پست گفته بشود امیدوارم که براتون کاربردی باشد...
اگر اطلاعات جامع تری از یونیت تست در پایتون نیاز داری می توانی سری به داکیومنت بزنی .
ممنون می شوم نظرات خودتون رو برای ما کامنت کنید ...
موفق باشید