ابزارها و تکنیک های پیشرفته پایتون: Testing Frameworks: pytest - پرسش و پاسخ
Testing Frameworks: pytest
پرسش:
چگونه می توانیم یک تست ساده با pytest بنویسیم؟
پاسخ:
برای نوشتن یک تست ساده با pytest، کافیست تابعی را تعریف کنید که نام آن با 'test_' شروع می شود. درون این تابع، از assert برای بررسی درستی نتایج استفاده کنید. برای مثال: def test_addition(): assert 1 + 1 == 2. pytest به طور خودکار فایل ها و توابع با این الگوی نامگذاری را شناسایی و اجرا می کند.
پرسش:
fixtures در pytest چه کاربردی دارند و چگونه تعریف می شوند؟
پاسخ:
fixtures ابزارهایی در pytest هستند که برای آماده سازی داده ها، تنظیمات، یا منابع مورد نیاز برای اجرای تست ها استفاده می شوند. آنها به مدیریت وابستگی های تست کمک می کنند و از تکرار کد جلوگیری می کنند. یک fixture با دکوراتور @pytest.fixture تعریف می شود و می تواند به عنوان آرگو مان به توابع تست پاس داده شود.
پرسش:
چگونه می توانیم یک fixture را برای استفاده در چندین تست بازیافت کنیم؟
پاسخ:
برای بازیافت یک fixture در چندین تست، می توانید آن را در یک فایل conftest.py در دایرکتوری ریشه پروژه یا یکی از زیردایرکتوری های آن قرار دهید. pytest به طور خودکار fixtures تعریف شده در conftest.py را در تمام تست های موجود در آن دایرکتوری و زیردایرکتوری هایش در دسترس قرار می دهد.
پرسش:
چگونه می توانیم تست های خاصی را با pytest علامت گذاری (mark) کنیم؟
پاسخ:
pytest به شما امکان می دهد تا تست ها را با استفاده از دکوراتور @pytest.mark.mark_name علامت گذاری کنید. این کار برای دسته بندی تست ها (مثلا تست های مربوط به یک قابلیت خاص) یا برای نادیده گرفتن برخی تست ها (مثلا با @pytest.mark.skip) مفید است. سپس می توانید تست ها را بر اساس این مارک ها اجرا یا فیلتر کنید.
پرسش:
چگونه می توانیم تست هایی را که هنوز کامل نشده اند با pytest نادیده بگیریم؟
پاسخ:
برای نادیده گرفتن موقت یک تست، می توانید از دکوراتور @pytest.mark.skip استفاده کنید. این دکوراتور تست را از اجرا باز می دارد و در گزارش نتایج به عنوان نادیده گرفته شده نشان می دهد. همچنین می توانید از @pytest.mark.skipif(condition, reason='...') برای نادیده گرفتن شرطی تست ها استفاده کنید.
پرسش:
چگونه می توانیم خروجی (stdout) توابع را در تست های pytest بررسی کنیم؟
پاسخ:
pytest به طور خودکار خروجی استاندارد (stdout) را در طول اجرای تست ها ضبط می کند. اگر تست شما انتظار خروجی خاصی را دارد، می توانید از پارامتر capsys در fixture تست خود استفاده کرده و سپس از متد capsys.readouterr() برای دسترسی به خروجی استاندارد و خطای استاندارد استفاده کنید و آن را با مقادیر مورد انتظار مقایسه نمایید.
پرسش:
چگونه می توانیم از pytest برای تست کردن توابع ناهمز مان (async functions) استفاده کنیم؟
پاسخ:
برای تست کردن توابع ناهمز مان با pytest، باید از پلاگین pytest-asyncio استفاده کنید. این پلاگین به pytest اجازه می دهد تا توابع async را به درستی مدیریت کند. کافیست تابع تست خود را با دکوراتور @pytest.mark.asyncio علامت گذاری کنید و سپس می توانید از await برای فراخوانی توابع ناهمز مان در داخل تست استفاده کنید.
پرسش:
چگونه می توانیم تست ها را با pytest به صورت موازی اجرا کنیم؟
پاسخ:
برای اجرای موازی تست ها با pytest، می توانید از پلاگین pytest-xdist استفاده کنید. پس از نصب این پلاگین (pip install pytest-xdist)، می توانید تست ها را با استفاده از دستور pytest -n auto اجرا کنید، که 'auto' به pytest می گوید تا تعداد مناسبی پردازنده را برای اجرای موازی تست ها شناسایی کند.
منبع آموزشی این مطلب
این مطلب برگرفته از محصول آموزشی «سفری به دنیای پایتون: از اصول تا تکنیک های حرفه ای» است
برای مشاهده توضیحات کامل، جزئیات دوره و دریافت محصول، روی دکمه زیر کلیک کنید.
اطلاعات بیشتر و دریافت محصول