شروع کنید

ساخت وبلاگ

یک فایل جدید به نام test_sample. py ، حاوی یک تابع و یک آزمایش ایجاد کنید:

# محتوای test_sample. py دنباله کار(x): برگشت x + 1 دنباله test_answer(): ادعا کردن کار(3) == 5 
$ pytest=======Platform Linux-Python 3. x. y ، Pytest-7. X. Y ، pluggy-1. x. y rootdir:/home/sweet/پروژه جمع آوری 1 مورد test_sample. pyF [100 ٪]=================================.=================_______________________________ test_answer ____________________________________ def test_answer():>ادعای عملکرد (3) == 5E ادعا 4 == 5 E + که در آن 4 = FUNC (3) test_sample. py======== test_sample. py::test_answer - ادعا 4 == 5============================ 1 شکست خورد در 0. 12s ============================= 

[100 ٪] به پیشرفت کلی در اجرای همه موارد آزمون اشاره دارد. پس از اتمام ، Pytest گزارش شکست را نشان می دهد زیرا عملکرد (3) 5 بر نمی گردد.

برای تأیید انتظارات آزمون می توانید از بیانیه Assert استفاده کنید. درون نگری ادعای پیشرفته Pytest به طور هوشمندانه مقادیر واسطه ای از بیان ادعا را گزارش می کند ، بنابراین می توانید از نام های بسیاری از روش های میراث Junit جلوگیری کنید.

چندین آزمایش را انجام دهید

Pytest تمام پرونده های تست فرم _ *. py یا *_test. py را در فهرست فعلی و زیر مجموعه های آن اجرا می کند. به طور کلی ، از قوانین استاندارد کشف آزمون پیروی می کند.

ادعا کنید که یک استثناء خاص مطرح شده است

از Helper Helper استفاده کنید تا ادعا کنید که برخی از کد ها یک استثنا را ایجاد می کند:

# محتوای test_sysexit. py وارد كردن پستان دنباله f(): بالا بردن سیستم سیستم(1) دنباله test_mytest(): با پستان.افزایش(سیستم سیستم): f() 

عملکرد تست را با حالت گزارش "آرام" اجرا کنید:

$ pytes t-q test_sysexit. py. [100 ٪] 1 گذشت در 0. 12s 

پرچ م-Q/-SUTE FLAG مختصر خروجی را در این و مثال های زیر نگه می دارد.

گروه های چند گروه را در یک کلاس گروه بندی کنید

پس از تست های متعدد ، ممکن است بخواهید آنها را در یک کلاس گروه بندی کنید. Pytest ایجاد یک کلاس حاوی بیش از یک تست را آسان می کند:

# محتوای test_class. py طبقه کلاس تست: دنباله test_one(خود): x = "این" ادعا کردن "ح" in x دنباله test_two(خود): x = "سلام" ادعا کردن هتتر(x, "بررسی") 

Pytest تمام آزمایشات را پس از کنوانسیون های خود برای کشف تست پایتون کشف می کند ، بنابراین هر دو عملکرد پیشوند Test_ را پیدا می کند. نیازی به زیر کلاس چیزی نیست ، اما حتماً کلاس خود را با تست پیشوند کنید ، در غیر این صورت کلاس رد می شود. ما به سادگی می توانیم ماژول را با عبور از نام پرونده آن اجرا کنیم:

$ pytes t-q test_class. py.F [100 ٪]=================================.=================____________________________ TestClass. TEST_TWO ____________________________ self = def test_two(self): x = "hello">ادعا Hasattr (x ، "بررسی")e consertionError: ادعای نادرست E + که در آن false = hasattr ("سلام" ، "بررسی") test_class. py: 8: AsertionError =========================.======== test_class. py::testclass::test_two - AssertionError: ادعای نادرست1 شکست خورد, 1 گذشت در 0. 12s 

آزمون اول گذشت و دوم شکست خورد. به راحتی می توانید مقادیر میانی را در این ادعا مشاهده کنید تا به شما در درک دلیل عدم موفقیت کمک کند.

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

  • سازمان آزمایشی
  • به اشتراک گذاری وسایل برای تست ها فقط در آن کلاس خاص
  • استفاده از علائم در سطح کلاس و داشتن آنها به طور ضمنی در همه آزمایشات اعمال می شود

چیزی که باید هنگام گروه بندی تست های داخل کلاس ها از آن آگاه باشید این است که هر آزمون نمونه ای منحصر به فرد از کلاس دارد. داشتن هر آزمون به اشتراک گذاری یک نمونه کلاس یکسان برای آزمایش انزوا بسیار مضر خواهد بود و شیوه های آزمون ضعیف را ترویج می کند. این در زیر بیان شده است:

# محتوای test_class_demo. py طبقه تست کلاس: ارزش = 0 دنباله test_one(خود): خود.ارزش = 1 ادعا کردن خود.ارزش == 1 دنباله test_two(خود): ادعا کردن خود.ارزش == 1 
$ pytes t-k testclassdemoinstanc e-q.F [100 ٪]=================================.=================______________________ TestClassDemoinstance. Test_Two ______________________ self = def test_two(self):>خود را ادعا کنید. Value == 1E ادعا 0 == 1 E + جایی که 0 = . Value test_class_demo. py: 9: AsertionError ======================= اطلاعات خلاصه تست کوتاه =============================================================================.======== test_class_demo. py::testclassdemoinstance::test_two - ادعا 0 == 11 شکست خورد, 1 گذشت در 0. 12s 

توجه داشته باشید که ویژگی های اضافه شده در سطح کلاس ویژگی های کلاس هستند ، بنابراین بین تست ها به اشتراک گذاشته می شوند.

یک دایرکتوری موقت منحصر به فرد برای تست های عملکردی درخواست کنید

Pytest برای درخواست منابع دلخواه ، مانند یک دایرکتوری موقت منحصر به فرد ، لوازم جانبی/آرگومان های عملکردی را ارائه می دهد:

# محتوای test_tmp_path. py دنباله test_needsfiles(tmp_path): چاپ(tmp_path) ادعا کردن 0 

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

$ pytes t-q test_tmp_path. pyF [100 ٪]=================================.=================_____________________________ test_needsfiles __________________________________ tmp_path = PosixPath('PYTEST_TMPDIR/test_needsfiles0') def test_needsfiles(tmp_path): print(tmp_path)>ادعا 0E ادعا 0 test_tmp_path. py: 3: AsertionError --------------------------- تماس STDOUT ضبط شده ----------------------------- PYTEST_TMPDIR/TEST_NEEDSFILES0 =======================.================== test_tmp_path. py::test_needsfiles - ادعا 01 شکست خورد در 0. 12s 

اطلاعات بیشتر در مورد کارگردانی موقت در فهرست ها و پرونده های موقت موجود است.

دریابید که چه نوع وسایل ساخته شده Pytest با دستور وجود دارد:

Pytes t-تناسب# وسایل ساخته شده و سفارشی را نشان می دهد 

توجه داشته باشید که این دستور وسایل را با پیشبرد _ حذف می کند مگر اینکه گزین ه-v اضافه شود.

ادامه خواندن

برای کمک به شما در سفارشی کردن تست ها برای گردش کار منحصر به فرد خود ، منابع Pytest اضافی را بررسی کنید:

  • "نحوه فراخوانی پیتست" برای نمونه های دعوت خط فرمان
  • "نحوه استفاده از Pytest با مجموعه تست موجود" برای کار با تست های از قبل موجود
  • "چگونه می توان توابع تست را با ویژگی ها علامت گذاری کرد" برای اطلاعات در مورد مکانیسم pytest. mark
  • "مرجع فیکس ها" برای ارائه یک پایه کاربردی در تست های شما
  • "نوشتن افزونه ها" برای مدیریت و نوشتن افزونه ها
  • "شیوه های خوب ادغام" برای مجازی و چیدمان تست
نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 32 تاريخ : چهارشنبه 18 مرداد 1402 ساعت: 20:43