pytest: yaxshiroq dasturlar yozishga yordam beradi¶
pytest frameworki kichik, o'qilishi oson testlarni yozishni osonlashtiradi va ilovalar hamda kutubxonalar uchun murakkab funksional testlarni qo'llab-quvvatlashga moslashadi.
pytest uchun Python 3.8+ yoki PyPy3 talab etiladi.
PyPI paketi nomi: pytest
Masalan¶
# test_sample.py
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
Buni bajarish uchun:
$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-8.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item
test_sample.py F [100%]
================================= FAILURES =================================
_______________________________ test_answer ________________________________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:6: AssertionError
========================= short test summary info ==========================
FAILED test_sample.py::test_answer - assert 4 == 5
============================ 1 failed in 0.12s =============================
pytest'ning batafsil assertion tahlil qilish imkoniyati tufayli faqat oddiy assert operatorlari ishlatiladi.
Boshlash bo'limida pytest'dan foydalanishni asosiy ko'rsatmalar bilan tanishing.
Xususiyatlar¶
Muvaffaqiyatsiz assert bayonotlari haqida batafsil ma'lumot (
self.assert*nomlarini eslab qolish shart emas)Test modullari va funksiyalarini Avto-aniqlash imkoniyati
Kichik yoki parametrli uzoq muddatli test resurslarini boshqarish uchun Modulli fixture'lar
unittest (shu jumladan trial) test to'plamlarini bir zumda bajarish imkoniyati
Python 3.8+ yoki PyPy 3
1300+ dan ortiq tashqi plaginlar va rivojlanayotgan jamoa orqali kuchli plagin arxitekturasi
Qo'llanma¶
Boshlash - pytest-ni o'rnating va uning asoslarini atigi yigirma daqiqada o'rganing
Qanday qilib - qadam-baqadam qo'llanmalar, turli ish holatlari va ehtiyojlarni qamrab oladi
Ma'lumotlar - pytest API to'liq ma'lumotnomasini, plaginlar ro'yxatini va boshqalarni o'z ichiga oladi
Tushuntirish - asosiy mavzularni tushuntirish, yuqori darajadagi savollarga javoblar
Xatolar/Talablar¶
Iltimos, xatolarni yuborish yoki xususiyatlar so'rash uchun GitHub issue tracker dan foydalaning.
pytest-ni qo'llab-quvvatlash¶
Open Collective — ochiq va shaffof jamiyatlar uchun onlayn moliyalashtirish platformasi. Bu platforma mablag' to'plash va moliyaviy ko'rsatkichlarni to'liq shaffof tarzda bo'lishish vositalarini taqdim etadi.
Bu platforma bir martalik yoki oylik xayr-ehsonlarni to'g'ridan-to'g'ri loyihaga yubormoqchi bo'lgan shaxslar va kompaniyalar uchun qulay.
Batafsil ma'lumotni pytest collective sahifasida topishingiz mumkin.
pytest Biznes uchun¶
Tidelift obunasining bir qismi sifatida mavjud.
pytest va boshqa minglab paketlarni boshqaruvchi mutaxassislar Tidelift bilan hamkorlik qilib, ochiq manba bog'liqliklarining tijorat qo'llab-quvvatlashi va texnik xizmat ko'rsatishni ta'minlashmoqda. Bu biznesingiz uchun vaqtni tejash, xavfni kamaytirish va kod sifatini yaxshilash imkonini beradi, shu bilan birga aynan biznesingizda foydalanayotgan bog'liqliklaringizni ishlab chiqayotgan texnik xizmat ko'rsatuvchilarga moliyaviy qo'llab-quvvatlashni ta'minlaydi.
Xavfsizlik¶
pytest hech qachon xavfsizlik zaifliklari bilan bog'liq bo'lmagan, ammo har qanday xavfsizlik muammosi yuzaga kelsa, iltimos, xavfsizlik zaifliklarini xabar qilish uchun Tidelift xavfsizlik aloqasi dan foydalaning. Tidelift ushbu muammoni bartaraf etish va uning oshkor qilinishini samarali tarzda muvofiqlashtiradi.