PyTest oktatóanyag: Mi az, hogyan kell telepíteni, keretrendszer, állítások
Mi az a PyTest?
PyTest egy tesztelési keretrendszer, amely lehetővé teszi a felhasználók számára, hogy tesztkódokat írjanak Python programozási nyelv. Segít egyszerű és méretezhető tesztesetek megírásában adatbázisokhoz, API-khoz vagy felhasználói felületekhez. A PyTest elsősorban API-k tesztjére szolgál. Segít teszteket írni az egyszerű egységtesztektől az összetett funkcionális tesztekig.
Miért érdemes a PyTestet használni?
A pytest néhány előnye az
- Nagyon könnyű elkezdeni az egyszerű és könnyű szintaxis miatt.
- Párhuzamosan futtathat teszteket.
- Futtathat egy adott tesztet vagy tesztek egy részét
- A tesztek automatikus felismerése
- Tesztek kihagyása
- Nyílt forráskód
A PyTest telepítése
A PyTest telepítésének folyamata a következő:
Step 1) A pytest a következővel telepítheti
pip install pytest==2.9.1
A telepítés befejezése után a gombbal megerősítheti
py.test -h
Ekkor megjelenik a súgó
Az első alapvető PyTest
Most egy alap PyTest példával megtanuljuk, hogyan kell használni a Pytestet.
Hozzon létre egy study_pytest mappát. Ebben a mappában fogjuk létrehozni tesztfájljainkat.
Kérjük, keresse meg a mappát a parancssorban.
Hozzon létre egy test_sample1.py nevű fájlt a mappában
Adja hozzá az alábbi kódot, és mentse el
import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"
Futtassa a tesztet a paranccsal
py.test
A kimenetet mint
test_sample1.py F.
============================================== FAILURES ========================================
____________________________________________ test_sample1 ______________________________________
def test_file1_method1():
x=5
y=6
assert x+1 == y,"test failed"
> assert x == y,"test failed"
E AssertionError: test failed
E assert 5 == 6
test_sample1.py:6: AssertionError
Itt a test_sample1.py F.
F azt mondja, kudarc
Pont(.) azt mondja, siker.
A hibák részben láthatja a sikertelen módszer(eke)t és a hibasort. Itt x==y azt jelenti, hogy 5==6, ami hamis.
Ebben a PyTest-oktatóanyagban a következő lépésben a PyTestben történő érvényesítésről fogunk tanulni.
Állítások a PyTestben
A Pytest állítások olyan ellenőrzések, amelyek igaz vagy hamis állapotot adnak vissza. In Python Pytest, ha egy állítás meghiúsul egy tesztmetódusban, akkor a metódus végrehajtása ott leáll. A tesztmódszer fennmaradó kódja nem kerül végrehajtásra, és a Pytest állítások a következő tesztmódszerrel folytatódnak.
Pytest Assert példák:
assert "hello" == "Hai" is an assertion failure. assert 4==4 is a successful assertion assert True is a successful assertion assert False is an assertion failure.
Fontolja
assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
Helyezze ezt a kódot a test_file1_method1()-be az állítás helyett
assert x == y,"test failed"
A teszt futtatásával a hiba as AssertionError: a teszt sikertelen x=5 y=6
Hogyan azonosítja a PyTest a tesztfájlokat és a vizsgálati módszereket
Alapértelmezés szerint a pytest csak a karakterekkel kezdődő fájlneveket azonosítja teszt_ vagy azzal végződve _teszt mint a tesztfájlok. Más fájlneveket azonban kifejezetten megemlíthetünk (később magyarázzuk). A Pytest megköveteli a tesztmetódusnevek kezdetét "teszt.” Az összes többi metódusnevet figyelmen kívül hagyja a rendszer, még akkor is, ha kifejezetten kérjük a metódusok futtatását.
Nézzen meg néhány példát érvényes és érvénytelen pytest fájlnevekre
test_login.py - valid login_test.py - valid testlogin.py -invalid logintest.py -invalid
Megjegyzés: Igen, kifejezetten megkérhetjük a pytest-et, hogy válassza ki a testlogin.py és a logintest.py fájlokat
Tekintse meg az érvényes és érvénytelen pytest tesztmódszerek néhány példáját
def test_file1_method1(): - valid def testfile1_method1(): - valid def file1_method1(): - invalid
Megjegyzés: Még ha kifejezetten megemlítjük is a file1_method1(), a pytest nem fogja futtatni ezt a metódust.
Futtasson több tesztet egy adott fájlból és több fájlból
Jelenleg a study_pytest mappában található egy test_sample1.py fájl. Tegyük fel, hogy több fájlunk van, mondjuk a test_sample2.py, test_sample3.py. Az összes teszt futtatásához a mappában és az almappákban található összes fájlból csak a pytest parancsot kell futtatnunk.
py.test
Ez az összes test_ karakterrel kezdődő fájlnevet és a _test karakterrel végződő fájlnevet futtatja az adott mappában és a mappa almappáiban.
Ha csak egy adott fájlból szeretne teszteket futtatni, használhatjuk a py.test fájlt
py.test test_sample1.py
Futtassa le az Entire Test egy részhalmazát a PyTest segítségével
Néha nem akarjuk a teljes tesztcsomagot futtatni. A Pytest lehetővé teszi bizonyos tesztek futtatását. 2 módon tehetjük meg
- Tesztnevek csoportosítása részkarakterlánc-illesztéssel
- A tesztek csoportosítása markerek szerint
Már van test_sample1.py. Hozzon létre egy test_sample2.py fájlt, és adja hozzá az alábbi kódot
def test_file2_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) def test_file2_method2(): x=5 y=6 assert x+1 == y,"test failed"
Tehát jelenleg van
• test_sample1.py • test_file1_method1() • test_file1_method2() • test_sample2.py • test_file2_method1() • test_file2_method2()
1. lehetőség) Futtasson teszteket részkarakterlánc-illesztéssel
Itt le kell futtatnunk az összes olyan tesztet, amelynek nevében a method1 szerepel
py.test -k method1 -v -k <expression> is used to represent the substring to match -v increases the verbosity
Tehát a py.test -k method1 -v futtatása a következő eredményt adja
test_sample2.py::test_file2_method1 FAILED
test_sample1.py::test_file1_method1 FAILED
============================================== FAILURES ==============================================
_________________________________________ test_file2_method1 _________________________________________
def test_file2_method1():
x=5
y=6
assert x+1 == y,"test failed"
> assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
E AssertionError: test failed because x=5 y=6
E assert 5 == 6
test_sample2.py:5: AssertionError
_________________________________________ test_file1_method1 _________________________________________
@pytest.mark.only
def test_file1_method1():
x=5
y=6
assert x+1 == y,"test failed"
> assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
E AssertionError: test failed because x=5 y=6
E assert 5 == 6
test_sample1.py:8: AssertionError
================================= 2 tests deselected by '-kmethod1' ==================================
=============================== 2 failed, 2 deselected in 0.02 seconds ===============================
Itt a vége felé láthatod 2 teszt kijelölését megszüntette a '-kmethod1' amelyek a teszt_fájl1_módszer2 és a teszt_fájl2_módszer2
Próbáljon meg futni különféle kombinációkkal, például: -
py.test -k method -v - will run all the four methods py.test -k methods -v – will not run any test as there is no test name matches the substring 'methods'
2. lehetőség: Futtasson teszteket markerekkel
A Pytest lehetővé teszi, hogy különböző attribútumokat állítsunk be a vizsgálati módszerekhez a pytest markerek (@pytest.mark) segítségével. Ahhoz, hogy jelölőket használjunk a tesztfájlban, importálnunk kell a pytest-et a tesztfájlokba.
Itt különböző markerneveket fogunk alkalmazni a tesztelési módszerekre, és specifikus teszteket futtatunk a markernevek alapján. A segítségével meghatározhatjuk a markereket az egyes tesztneveken
@pytest.mark.<name>.
A vizsgálati módszereken meghatározzuk a set1 és set2 markereket, és a tesztet a markernevek segítségével fogjuk lefuttatni. Frissítse a tesztfájlokat a következő kóddal
teszt_minta1.py
import pytest @pytest.mark.set1 def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) @pytest.mark.set2 def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"
teszt_minta2.py
import pytest @pytest.mark.set1 def test_file2_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed because x=" + str(x) + " y=" + str(y) @pytest.mark.set1 def test_file2_method2(): x=5 y=6 assert x+1 == y,"test failed"
A megjelölt tesztet lefuttathatjuk
py.test -m <name> -m <name> mentions the marker name
Futtassa a py.test -m set1 parancsot. Ez a teszt_fájl1_módszere1, teszt_fájl2_módszere1, teszt_fájl2_módszere2 metódusait fogja futtatni.
A py.test -m set2 futtatása a test_file1_method2 parancsot fogja futtatni.
Futtasson teszteket a Pytesttel párhuzamosan
Általában egy tesztcsomag több tesztfájlt és több száz tesztmódszert tartalmaz, amelyek végrehajtása jelentős időt vesz igénybe. A Pytest lehetővé teszi a tesztek párhuzamos futtatását.
Ehhez először telepítenünk kell a pytest-xdist futtatásával
pip install pytest-xdist
Most már futtathat teszteket
py.test -n 4
-n több dolgozó használatával futtatja le a teszteket. A fenti parancsban 4 dolgozó lesz a teszt futtatása.
Pytest Fixtures
A rögzítéseket akkor használjuk, ha minden tesztelési módszer előtt valamilyen kódot szeretnénk futtatni. Tehát ahelyett, hogy minden tesztben megismételnénk ugyanazt a kódot, rögzítéseket határozunk meg. Általában a rögzítéseket adatbázis-kapcsolatok inicializálására, a bázis átadására stb
A metódus Pytest-fixtureként van megjelölve a -val
@pytest.fixture
Egy tesztmódszer használhat Pytest fixture-t, ha bemeneti paraméterként említi a rögzítést.
Hozzon létre egy új test_basic_fixture.py fájlt a következő kóddal
import pytest @pytest.fixture def supply_AA_BB_CC(): aa=25 bb =35 cc=45 return [aa,bb,cc] def test_comparewithAA(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
Itt
- Van egy supply_AA_BB_CC nevű lámpatestünk. Ez a módszer egy 3 értékből álló listát ad vissza.
- 3 vizsgálati módszerünk van az egyes értékek összehasonlítására.
Mindegyik tesztfüggvény rendelkezik egy bemeneti argumentummal, amelynek neve egyezik egy elérhető rögzítővel. A Pytest ezután meghívja a megfelelő fixture metódust, és a visszaadott értékek a bemeneti argumentumban lesznek tárolva, itt a lista [25,35,45]. Most a listaelemeket használják az összehasonlítás vizsgálati módszereiben.
Most futtassa a tesztet, és nézze meg az eredményt
py.test test_basic_fixture
test_basic_fixture.py::test_comparewithAA FAILED
test_basic_fixture.py::test_comparewithBB PASSED
test_basic_fixture.py::test_comparewithCC FAILED
============================================== FAILURES ==============================================
_________________________________________ test_comparewithAA _________________________________________
supply_AA_BB_CC = [25, 35, 45]
def test_comparewithAA(supply_AA_BB_CC):
zz=35
> assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed"
E AssertionError: aa and zz comparison failed
E assert 25 == 35
test_basic_fixture.py:10: AssertionError
_________________________________________ test_comparewithCC _________________________________________
supply_AA_BB_CC = [25, 35, 45]
def test_comparewithCC(supply_AA_BB_CC):
zz=35
> assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
E AssertionError: cc and zz comparison failed
E assert 45 == 35
test_basic_fixture.py:16: AssertionError
================================= 2 failed, 1 passed in 0.05 seconds =================================
A test_comparewithBB teszt sikeres, mivel zz=BB=35, és a fennmaradó 2 teszt sikertelen.
A rögzítési metódusnak csak a definiált tesztfájlon belül van hatóköre. Ha megpróbáljuk elérni a fixture-t egy másik tesztfájlban, hibaüzenetet kapunk, amely azt mondja, hogy fixture A 'supply_AA_BB_CC' nem található más fájlokban található vizsgálati módszerekhez.
Ha ugyanazt a fixture-t több tesztfájllal is használni szeretné, a conftest.py nevű fájlban fixture metódusokat hozunk létre.
Lássuk ezt az alábbi PyTest példán keresztül. Hozzon létre 3 fájlt: conftest.py, test_basic_fixture.py, test_basic_fixture2.py a következő kóddal
conftest.py
import pytest @pytest.fixture def supply_AA_BB_CC(): aa=25 bb =35 cc=45 return [aa,bb,cc]
test_basic_fixture.py
import pytest def test_comparewithAA(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC(supply_AA_BB_CC): zz=35 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
test_basic_fixture2.py
import pytest def test_comparewithAA_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[0]==zz,"aa and zz comparison failed" def test_comparewithBB_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[1]==zz,"bb and zz comparison failed" def test_comparewithCC_file2(supply_AA_BB_CC): zz=25 assert supply_AA_BB_CC[2]==zz,"cc and zz comparison failed"
A pytest először megkeresi a fixture-t a tesztfájlban, és ha nem találja, akkor a conftest.py fájlban
Futtassa a tesztet a py.test -k test_comparewith -v paranccsal, hogy megkapja az alábbi eredményt
test_basic_fixture.py::test_comparewithAA FAILED test_basic_fixture.py::test_comparewithBB PASSED test_basic_fixture.py::test_comparewithCC FAILED test_basic_fixture2.py::test_comparewithAA_file2 PASSED test_basic_fixture2.py::test_comparewithBB_file2 FAILED test_basic_fixture2.py::test_comparewithCC_file2 FAILED
Pytest paraméterezett teszt
A teszt paraméterezésének célja egy teszt futtatása több argumentumkészlettel szemben. Ezt a @pytest.mark.parametrize segítségével tehetjük meg.
Ezt látni fogjuk az alábbi PyTest példával. Itt 3 argumentumot adunk át egy tesztmódszernek. Ez a tesztmódszer hozzáadja az első 2 argumentumot, és összehasonlítja a 3. argumentummal.
Hozza létre a test_addition.py tesztfájlt az alábbi kóddal
import pytest
@pytest.mark.parametrize("input1, input2, output",[(5,5,10),(3,5,12)])
def test_add(input1, input2, output):
assert input1+input2 == output,"failed"
Itt a tesztmódszer 3 argumentumot fogad el – input1, input2, output. Hozzáadja az input1-et és input2-t, és összehasonlítja a kimenettel.
Futtassuk le a tesztet a py.test -k test_add -v paranccsal, és nézzük meg az eredményt
test_addition.py::test_add[5-5-10] PASSED
test_addition.py::test_add[3-5-12] FAILED
============================================== FAILURES ==============================================
__________________________________________ test_add[3-5-12] __________________________________________
input1 = 3, input2 = 5, output = 12
@pytest.mark.parametrize("input1, input2, output",[(5,5,10),(3,5,12)])
def test_add(input1, input2, output):
> assert input1+input2 == output,"failed"
E AssertionError: failed
E assert (3 + 5) == 12
test_addition.py:5: AssertionError
A tesztek 2-szer futottak le – az egyik 5+5 ==10, a másik pedig 3+5 ==12
test_addition.py::test_add[5-5-10] SIKERTELEN
test_addition.py::test_add[3-5-12] SIKERTELEN
Pytest Xfail / Skip Tests
Lesznek olyan helyzetek, amikor nem akarunk tesztet végrehajtani, vagy a próbaper nem releváns egy adott időre. Ilyen helyzetekben lehetőségünk van a teszt sikertelenségére vagy a tesztek kihagyására
Az xfailed teszt végrehajtásra kerül, de nem számít sikertelen vagy sikeres tesztnek. Ha a teszt sikertelen, nem jelenik meg a visszakövetés. Megbukhatunk a tesztek használatával
@pytest.mark.xfail.
A teszt kihagyása azt jelenti, hogy a teszt nem kerül végrehajtásra. A teszteket kihagyhatjuk a használatával
@pytest.mark.skip.
Szerkessze a test_addition.py fájlt az alábbi kóddal
import pytest @pytest.mark.skip def test_add_1(): assert 100+200 == 400,"failed" @pytest.mark.skip def test_add_2(): assert 100+200 == 300,"failed" @pytest.mark.xfail def test_add_3(): assert 15+13 == 28,"failed" @pytest.mark.xfail def test_add_4(): assert 15+13 == 100,"failed" def test_add_5(): assert 3+2 == 5,"failed" def test_add_6(): assert 3+2 == 6,"failed"
Itt
- A teszt_add_1 és a teszt_add_2 kimarad, és nem kerül végrehajtásra.
- teszt_add_3 és teszt_add_4 x sikertelen. Ezek a tesztek végrehajtásra kerülnek, és az xfailed (a teszt sikertelensége esetén) vagy az xpassed (teszt sikeressége esetén) tesztek részét képezik. A kudarcoknak nem lesz nyoma.
- A test_add_5 és a test_add_6 végrehajtásra kerül, és a test_add_6 hibajelzést küld a visszakövetéssel, miközben a test_add_5 sikeres
Hajtsa végre a tesztet a py.test test_addition.py -v paranccsal, és nézze meg az eredményt
test_addition.py::test_add_1 SKIPPED
test_addition.py::test_add_2 SKIPPED
test_addition.py::test_add_3 XPASS
test_addition.py::test_add_4 xfail
test_addition.py::test_add_5 PASSED
test_addition.py::test_add_6 FAILED
============================================== FAILURES ==============================================
_____________________________________________ test_add_6 _____________________________________________
def test_add_6():
> assert 3+2 == 6,"failed"
E AssertionError: failed
E assert (3 + 2) == 6
test_addition.py:24: AssertionError
================ 1 failed, 1 passed, 2 skipped, 1 xfailed, 1 xpassed in 0.07 seconds =================
Eredmények XML
Teszteredményeket készíthetünk XML formátumban, amelyeket továbbíthatunk a Continuous Integration szerverekre további feldolgozásra stb. Ezt úgy lehet megtenni
py.test test_sample1.py -v –junitxml=”eredmény.xml”
Az result.xml fájl rögzíti a teszt végrehajtásának eredményét. Keresse meg alább a result.xml mintát
<?xml version="1.0" encoding="UTF-8"?>
<testsuite errors="0" failures="1" name="pytest" skips="0" tests="2" time="0.046">
<testcase classname="test_sample1" file="test_sample1.py" line="3" name="test_file1_method1" time="0.001384973526">
<failure message="AssertionError:test failed because x=5 y=6 assert 5 ==6">
@pytest.mark.set1
def test_file1_method1():
x=5
y=6
assert x+1 == y,"test failed"
> assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
E AssertionError: test failed because x=5 y=6
E assert 5 == 6
test_sample1.py:9: AssertionError
</failure>
</testcase>
<testcase classname="test_sample1" file="test_sample1.py" line="10" name="test_file1_method2" time="0.000830173492432" />
</testsuite>
Tól összesen két tesztet láthatunk, amelyek közül az egyik sikertelen. Az alábbiakban az egyes végrehajtott tesztek részleteit láthatja címke.
Pytest Framework API tesztelése
Most létrehozunk egy kis pytest keretrendszert az API teszteléséhez. Az itt használt API egy ingyenes https://reqres.in/. Ez a webhely csak azért készült, hogy tesztelhető API-t biztosítson. Ez a weboldal nem tárolja adatainkat.
Itt írunk néhány tesztet
- néhány felhasználó felsorolása
- bejelentkezni a felhasználókkal
Hozd létre az alábbi fájlokat a megadott kóddal
conftest.py – van egy fixture, amely megadja az alap URL-t az összes vizsgálati módszerhez
import pytest @pytest.fixture def supply_url(): return "https://reqres.in/api"
test_list_user.py – tartalmazza az érvényes és érvénytelen felhasználók listázásához szükséges tesztmódszereket
- A test_list_valid_user teszteli az érvényes felhasználói lekérést, és ellenőrzi a választ
- A test_list_invaliduser teszteli az érvénytelen felhasználói lekérést, és ellenőrzi a választ
import pytest
import requests
import json
@pytest.mark.parametrize("userid, firstname",[(1,"George"),(2,"Janet")])
def test_list_valid_user(supply_url,userid,firstname):
url = supply_url + "/users/" + str(userid)
resp = requests.get(url)
j = json.loads(resp.text)
assert resp.status_code == 200, resp.text
assert j['data']['id'] == userid, resp.text
assert j['data']['first_name'] == firstname, resp.text
def test_list_invaliduser(supply_url):
url = supply_url + "/users/50"
resp = requests.get(url)
assert resp.status_code == 404, resp.text
test_login_user.py – tesztmódszereket tartalmaz a bejelentkezési funkciók tesztelésére.
- A test_login_valid teszteli az érvényes bejelentkezési kísérletet e-mail címmel és jelszóval
- A test_login_no_password teszteli az érvénytelen bejelentkezési kísérletet jelszó átadása nélkül
- A test_login_no_email az érvénytelen bejelentkezési kísérletet e-mail átadása nélkül teszteli.
import pytest
import requests
import json
def test_login_valid(supply_url):
url = supply_url + "/login/"
data = {'email':'[email protected]','password':'something'}
resp = requests.post(url, data=data)
j = json.loads(resp.text)
assert resp.status_code == 200, resp.text
assert j['token'] == "QpwL5tke4Pnpja7X", resp.text
def test_login_no_password(supply_url):
url = supply_url + "/login/"
data = {'email':'[email protected]'}
resp = requests.post(url, data=data)
j = json.loads(resp.text)
assert resp.status_code == 400, resp.text
assert j['error'] == "Missing password", resp.text
def test_login_no_email(supply_url):
url = supply_url + "/login/"
data = {}
resp = requests.post(url, data=data)
j = json.loads(resp.text)
assert resp.status_code == 400, resp.text
assert j['error'] == "Missing email or username", resp.text
Futtassa a tesztet a py.test -v használatával
Lásd az eredményt mint
test_list_user.py::test_list_valid_user[1-George] PASSED test_list_user.py::test_list_valid_user[2-Janet] PASSED test_list_user.py::test_list_invaliduser PASSED test_login_user.py::test_login_valid PASSED test_login_user.py::test_login_no_password PASSED test_login_user.py::test_login_no_email PASSED
Frissítse a teszteket, és próbáljon ki különféle kimeneteket
Összegzésként
Ebben a PyTest oktatóanyagban foglalkoztunk
- A pytest telepítése a segítségével pip telepítés pytest=2.9.1
- Egyszerű pytest program, és futtassa a py.test paranccsal.
- Az assert x==y állítások igaz vagy hamis értéket adnak vissza.
- Hogyan azonosítja a pytest a tesztfájlokat és -módszereket.
- Fájlok tesztelése a következővel kezdődik: teszt_ vagy azzal végződve _teszt
- Vizsgálati módszerek kezdve teszt
- py.test parancs futtatja az összes tesztfájlt a mappában és az almappákban. Egy adott fájl futtatásához használhatjuk a py.test parancsot
- Futtassa le a vizsgálati módszerek egy részhalmazát
- A tesztnevek csoportosítása a matching.py.test -k részkarakterlánc szerint -v futtatja az összes tesztet nevében.
- Futtassa le a tesztet markerekkel.Jelölje meg a teszteket a @pytest.mark használatával. és futtassa a teszteket a pytest -m használatával jelű tesztek futtatásához .
- Futtasson teszteket párhuzamosan
- A pytest-xdist telepítése a pip install pytest-xdist segítségével
- Futtasson teszteket a py.test -n NUM paranccsal, ahol a NUM a dolgozók száma
- Fixture metódusok létrehozása a kód futtatásához minden teszt előtt a metódus @pytest.fixture megjelölésével
- A rögzítési metódusok hatóköre a definiált fájlon belül van.
- Egy rögzítési módszer több tesztfájlon keresztül is elérhető, ha a conftest.py fájlban definiálja.
- Egy tesztmetódus elérheti a Pytest-fixture-t, ha bemeneti argumentumként használja.
- Paraméterezési tesztek több bemeneti készlettel történő futtatáshoz.
@pytest.mark.parametrize(“bemenet1, bemenet2, kimenet”,[(5,5,10),(3,5,12)])
def test_add(bemenet1, bemenet2, kimenet):
assert input1+input2 == output,”sikertelen”
futtatja a tesztet az (5,5,10) és (3,5,12) bemenetekkel - Tesztek kihagyása/xfail a @pytets.mark.skip és @pytest.mark.xfail használatával
- Hozzon létre teszteredményeket XML formátumban, amely lefedi a végrehajtott teszt részleteit a py.test test_sample1.py -v –junitxml=”result.xml” használatával
- Egy minta pytest keretrendszer API teszteléséhez




