امیر محمد یعقوبی
امیر محمد یعقوبی
خواندن ۲ دقیقه·۲ سال پیش

مثل حرفه ای ها تست بنویس - جنگو




اگه این پست رو باز کردی به احتمال زیاد اهمیت تست نوشتن رو میدونی

اما در عین حال قطعا میدونی چقد نوشتن تست برای پروژه میتونه سخت و عذاب آور باشه. اما این موضوع رو موقعی میتونی درک کنی که یه دیتابیس پیچیده داشته باشی و نیاز باشه برای تست یه نمونه مدل تعداد زیادی نمونه مدل دیگه ایجاد کنی.


البته به احتمال زیاد الان هیچ تصوری از چیزی که گفتم نداری. بیاید یکمی خلاقیت به خرج بدیم.
تصور می کنیم این فایل مدل ماست:


فایل models.py
فایل models.py


خب. حالا اگه بخوایم برای مدل StudentEnrolment تست بنویسیم، باید قبلش نمونه مدل های User, Subject و Student رو ایجاد کنیم (چون relation دارن با هم دیگه).
اگه این کارو انجام بدیم به همچین تستی میرسیم‌:


روش معمولی برای نوشتن تست
روش معمولی برای نوشتن تست


خب همونطور که میبینید تعداد زیادی کد نوشتیم در حالی که هنوز واقعا شروع نکردیم به نوشتن تست.
اما قطعا یه روش آسون تر برای انجام این کار وجود داره. مگه نه ؟
اینجاست که model_baker وارد ماجرا میشه. بیاید حالا متد setUp رو با model_baker دوباره بنویسیم.


نوشتن تست به وسیله model_baker
نوشتن تست به وسیله model_baker


دیدید ؟ با یه خط کد انجامش دادیم :)

این پکیج خودش میره و تمام مدل ها و فیلد هایی که بهش نیاز داشتیم رو میسازه.
البته شما اگه بخواید هنوز هم میتونید برای هر فیلدی که میخواید یه مقدار مشخص تعیین کنید (با دادن argument).

این روش میتونه خیلی کمک کنه وقتی که مدل شما تو طول زمان خیلی تغییر میکنه! فرض کنید میخواید یه فیلد جدید به مدلتون اضافه کنید، اگه از همون روش معمولی برای نوشتن تست هاتون استفاده کرده باشید، باید برید و توی تمام تست هاتون به اون فیلد مشخص مقدار بدید. این پکیج میتونه این مشکل رو حل کنه.
خلاصه استفاده از model_baker برای نوشتن تست هاتون میتونه کلی زمان براتون صرفه جویی کنه :)

اگه میخواید اطلاعات بیشتری درباره model_baker به دست بیارید شدیدا بهتون پیشنهاد میکنم یه نگاه به داکیومنت رسمیش بندازید.
https://model-bakery.readthedocs.io/en/latest/

اگه این مقاله براتون مفید بود یادتون نره لایکش کنید‌ :)

جنگوفریمورک جنگوبرنامه نویسیتست نویسیوب
شاید از این پست‌ها خوشتان بیاید