PyTest-opetusohjelma: Mikä on, kuinka asentaa, puitteet, väitteet
Mikä on PyTest?
PyTest on testauskehys, jonka avulla käyttäjät voivat kirjoittaa testikoodeja käyttämällä Python ohjelmointikieli. Sen avulla voit kirjoittaa yksinkertaisia ja skaalautuvia testitapauksia tietokannoille, API:ille tai käyttöliittymälle. PyTestiä käytetään pääasiassa API-testien kirjoittamiseen. Se auttaa kirjoittamaan testejä yksinkertaisista yksikkötesteistä monimutkaisiin toiminnallisiin testeihin.
Miksi käyttää PyTestiä?
Jotkut pytestin eduista ovat
- Erittäin helppo aloittaa sen yksinkertaisen ja helpon syntaksin ansiosta.
- Testejä voi suorittaa rinnakkain.
- Voi suorittaa tietyn testin tai testien osajoukon
- Tunnista testit automaattisesti
- Ohita testit
- Avoin lähdekoodi
PyTestin asentaminen
Seuraavassa on prosessi PyTestin asentamiseksi:
Vaihe 1) Pytestin voi asentaa käyttämällä
pip install pytest==2.9.1
Kun asennus on valmis, voit vahvistaa sen painamalla
py.test -h
Tämä näyttää ohjeen
Ensimmäinen perus PyTest
Nyt opimme käyttämään Pytestiä PyTest-perusesimerkillä.
Luo kansio study_pytest. Luomme testitiedostomme tähän kansioon.
Siirry kyseiseen kansioon komentorivillä.
Luo kansioon tiedosto nimeltä test_sample1.py
Lisää alla oleva koodi siihen ja tallenna
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"
Suorita testi komennolla
py.test
Saat tulosteen muodossa
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
Täällä test_sample1.py F.
F sanoo epäonnistumisen
Piste(.) sanoo menestystä.
Vika-osiossa näet epäonnistuneet menetelmät ja vikarivin. Tässä x==y tarkoittaa 5==6, mikä on epätosi.
Seuraavaksi tässä PyTest-opetusohjelmassa opimme väittämisestä PyTestissä.
Väitteet PyTestissä
Pytest-väitteet ovat tarkistuksia, jotka palauttavat joko True tai False tilan. sisään Python Pytest, jos väite epäonnistuu testimenetelmässä, menetelmän suoritus pysäytetään siellä. Kyseisen testimenetelmän jäljellä olevaa koodia ei suoriteta, ja Pytest-vahvistukset jatkuvat seuraavalla testimenetelmällä.
Pytest Assert esimerkkejä:
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.
Harkita
assert x == y,"test failed because x=" + str(x) + " y=" + str(y)
Aseta tämä koodi kohtaan test_file1_method1() väitteen sijaan
assert x == y,"test failed"
Testin suorittaminen antaa epäonnistumisen as AssertionError: testi epäonnistui x=5 y=6
Kuinka PyTest tunnistaa testitiedostot ja testimenetelmät
Oletusarvoisesti pytest tunnistaa vain tiedostonimet, jotka alkavat kirjaimella testata_ tai päättyen _testata kuin testitiedostot. Voimme kuitenkin mainita nimenomaisesti muita tiedostonimiä (selvitetty myöhemmin). Pytest vaatii aluksi testimenetelmien nimet "testata.” Kaikki muut menetelmän nimet ohitetaan, vaikka pyytäisimme nimenomaisesti suorittamaan kyseiset menetelmät.
Katso esimerkkejä kelvollisista ja virheellisistä pytest-tiedostojen nimistä
test_login.py - valid login_test.py - valid testlogin.py -invalid logintest.py -invalid
Huomautus: Kyllä, voimme nimenomaisesti pyytää pytestiä valitsemaan testlogin.py ja logintest.py
Katso esimerkkejä kelvollisista ja virheellisistä pytest-testimenetelmistä
def test_file1_method1(): - valid def testfile1_method1(): - valid def file1_method1(): - invalid
Huomautus: Vaikka mainitsemme nimenomaisesti file1_method1() pytest ei suorita tätä menetelmää.
Suorita useita testejä tietystä tiedostosta ja useista tiedostoista
Tällä hetkellä kansiossa study_pytest on tiedosto test_sample1.py. Oletetaan, että meillä on useita tiedostoja, esimerkiksi test_sample2.py, test_sample3.py. Suorittaaksemme kaikki testit kaikista kansion ja alikansioiden tiedostoista meidän on vain suoritettava pytest-komento.
py.test
Tämä suorittaa kaikki tiedostonimet, jotka alkavat kirjaimella test_ ja tiedostonimet, jotka päättyvät _testiin kyseisessä kansiossa ja sen alikansioissa.
Jos haluat suorittaa testejä vain tietystä tiedostosta, voimme käyttää py.testiä
py.test test_sample1.py
Suorita koko testin osajoukko PyTestillä
Joskus emme halua suorittaa koko testipakettia. Pytestin avulla voimme suorittaa tiettyjä testejä. Voimme tehdä sen kahdella tavalla
- Testien nimien ryhmittely osamerkkijonovastaavuuden perusteella
- Testien ryhmittely merkkien mukaan
Meillä on jo test_sample1.py. Luo tiedosto test_sample2.py ja lisää siihen alla oleva koodi
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"
Meillä on siis tällä hetkellä
• test_sample1.py • test_file1_method1() • test_file1_method2() • test_sample2.py • test_file2_method1() • test_file2_method2()
Vaihtoehto 1) Suorita testit osamerkkijonoa sovittamalla
Täällä meidän on suoritettava kaikki testit, joiden nimessä on metodi1
py.test -k method1 -v -k <expression> is used to represent the substring to match -v increases the verbosity
Joten py.test -k method1 -v suorittaminen antaa seuraavan tuloksen
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 ===============================
Tästä näkee loppua kohden 2 testiä poistettu valinnalla '-kmethod1' jotka ovat testi_tiedosto1_menetelmä2 ja testitiedosto2_menetelmä2
Kokeile juosta eri yhdistelmillä, kuten: -
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'
Vaihtoehto 2) Suorita testit merkkien avulla
Pytestin avulla voimme asettaa erilaisia attribuutteja testimenetelmille käyttämällä pytest-merkkejä, @pytest.mark . Jotta voimme käyttää merkkejä testitiedostossa, meidän on tuotava pytest testitiedostoihin.
Tässä käytämme erilaisia merkkien nimiä testausmenetelmiin ja suoritamme erityisiä testejä markkerien nimien perusteella. Voimme määrittää kunkin testinimen markkerit käyttämällä
@pytest.mark.<name>.
Määrittelemme testausmenetelmille markkereita set1 ja set2, ja suoritamme testin käyttämällä markkerien nimiä. Päivitä testitiedostot seuraavalla koodilla
test_sample1.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"
test_sample2.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"
Voimme suorittaa merkityn testin mennessä
py.test -m <name> -m <name> mentions the marker name
Suorita py.test -m set1. Tämä suorittaa menetelmät testi_tiedosto1_menetelmä1, testitiedosto2_menetelmä1, testitiedosto2_menetelmä2.
Py.test -m set2 suorittaminen suorittaa test_file1_method2.
Suorita testit rinnakkain Pytestin kanssa
Yleensä testipaketissa on useita testitiedostoja ja satoja testimenetelmiä, joiden suorittaminen vie paljon aikaa. Pytestin avulla voimme suorittaa testejä rinnakkain.
Tätä varten meidän on ensin asennettava pytest-xdist suorittamalla
pip install pytest-xdist
Voit suorittaa testejä nyt
py.test -n 4
-n suorittaa testit käyttämällä useita työntekijöitä. Yllä olevassa komennossa on 4 työntekijää suorittamaan testi.
Pytest Fixtures
Fixtureja käytetään, kun haluamme suorittaa jonkin koodin ennen jokaista testimenetelmää. Joten sen sijaan, että toistaisimme samaa koodia jokaisessa testissä, määrittelemme kiinnikkeet. Yleensä kiinnittimiä käytetään tietokantayhteyksien alustamiseen, tukikohdan läpikulkuun jne
Metodi merkitään Pytest-kiinnitykseksi merkitsemällä
@pytest.fixture
Testausmenetelmä voi käyttää Pytest-kiinnitystä mainitsemalla kiinnikkeen syöttöparametrina.
Luo uusi tiedosto test_basic_fixture.py seuraavalla koodilla
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"
Tässä
- Meillä on valaisin nimeltä supply_AA_BB_CC. Tämä menetelmä palauttaa kolmen arvon luettelon.
- Meillä on 3 testimenetelmää, joita verrataan kutakin arvoa vastaan.
Jokaisella testifunktiolla on syöttöargumentti, jonka nimi vastaa käytettävissä olevaa kiinnitystä. Pytest kutsuu sitten vastaavan kiinnitysmenetelmän ja palautetut arvot tallennetaan input-argumenttiin, tässä luetteloon [25,35,45]. Nyt listakohteita käytetään vertailun testausmenetelmissä.
Suorita nyt testi ja katso tulos
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 =================================
Testi test_comparewithBB on hyväksytty, koska zz=BB=35, ja loput 2 testiä epäonnistuvat.
Kiinnitysmenetelmällä on laajuus vain siinä määritetyssä testitiedostossa. Jos yritämme päästä kiinni johonkin muuhun testitiedostoon, saamme virheilmoituksen, jossa sanotaan kiinnitys 'supply_AA_BB_CC' ei löytynyt muiden tiedostojen testimenetelmiä varten.
Jos haluat käyttää samaa kiinnitystä useita testitiedostoja vastaan, luomme kiinnitysmenetelmät tiedostoon nimeltä conftest.py.
Katsotaan tämä alla olevan PyTest-esimerkin avulla. Luo 3 tiedostoa conftest.py, test_basic_fixture.py, test_basic_fixture2.py seuraavalla koodilla
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"
pytest etsii kiinnittimen ensin testitiedostosta ja jos sitä ei löydy, se etsii conftest.py
Suorita testi komennolla py.test -k test_comparewith -v saadaksesi alla olevan tuloksen
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
Pytestin parametroitu testi
Testin parametroinnin tarkoitus on suorittaa testi useiden argumenttijoukkojen suhteen. Voimme tehdä tämän @pytest.mark.parametrize.
Näemme tämän alla olevan PyTest-esimerkin avulla. Tässä välitämme 3 argumenttia testimenetelmälle. Tämä testimenetelmä lisää kaksi ensimmäistä argumenttia ja vertaa sitä kolmanteen argumenttiin.
Luo testitiedosto test_addition.py alla olevalla koodilla
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"
Tässä testimenetelmä hyväksyy 3 argumenttia - input1, input2, output. Se lisää tulo1:n ja input2:n ja vertaa lähtöön.
Suoritetaan testi komennolla py.test -k test_add -v ja katsotaan tulos
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
Voit nähdä testejä ajettuina 2 kertaa – yksi tarkistus 5+5 ==10 ja toinen tarkistus 3+5 ==12
test_addition.py::test_add[5-5-10] HYVÄKSYTTY
test_addition.py::test_add[3-5-12] Epäonnistunut
Pytest Xfail / Ohita testit
Joissakin tilanteissa emme halua suorittaa testiä tai a testitapaus ei ole relevanttia tietylle ajalle. Näissä tilanteissa meillä on mahdollisuus X hylätä testi tai ohittaa testit
Xfailed-testi suoritetaan, mutta sitä ei lasketa osaksi epäonnistuneiksi tai läpäisiksi testeiksi. Jäljitystä ei näytetä, jos testi epäonnistuu. Voimme hylätä testejä käyttämällä
@pytest.mark.xfail.
Testin ohittaminen tarkoittaa, että testiä ei suoriteta. Voimme ohittaa testit käyttämällä
@pytest.mark.skip.
Muokkaa test_addition.py-tiedostoa alla olevalla koodilla
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"
Tässä
- test_add_1 ja test_add_2 ohitetaan, eikä niitä suoriteta.
- testi_lisää_3 ja testi_lisäys_4 ovat epäonnistuneita. Nämä testit suoritetaan ja ne ovat osa xfailed (jos testi epäonnistuu) tai xpassed (on test pass) -testejä. Epäonnistumisista ei tule jälkiä.
- test_add_5 ja test_add_6 suoritetaan ja test_add_6 raportoi epäonnistumisesta jäljittämisellä, kun test_add_5 menee läpi.
Suorita testi komennolla py.test test_addition.py -v ja katso tulos
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 =================
Tulokset XML
Voimme luoda testituloksia XML-muodossa, jotka voimme syöttää Continuous Integration -palvelimille jatkokäsittelyä varten ja niin edelleen. Tämän voi tehdä
py.test test_sample1.py -v –junitxml=”tulos.xml”
result.xml tallentaa testin suoritustuloksen. Etsi tulos.xml esimerkki alta
<?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>
From voimme nähdä yhteensä kaksi testiä, joista yksi on epäonnistunut. Alla näet kunkin suoritetun testin tiedot tag.
Pytest Framework API:n testaus
Nyt luomme pienen pytest-kehyksen API:n testaamiseksi. Tässä käytetty API on ilmainen https://reqres.in/. Tämä sivusto on tarkoitettu vain testattavan API:n tarjoamiseen. Tämä sivusto ei tallenna tietojamme.
Kirjoitamme tähän joitain testejä varten
- luetellaan joitain käyttäjiä
- kirjaudu sisään käyttäjien kanssa
Luo alla olevat tiedostot annetulla koodilla
conftest.py – sinulla on laite, joka toimittaa perus-URL-osoitteen kaikille testimenetelmille
import pytest @pytest.fixture def supply_url(): return "https://reqres.in/api"
test_list_user.py – sisältää testimenetelmät kelvollisten ja virheellisten käyttäjien luetteloimiseksi
- test_list_valid_user testaa kelvollisen käyttäjän haun ja tarkistaa vastauksen
- test_list_invaliduser testaa virheellisen käyttäjän haun ja tarkistaa vastauksen
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 – sisältää testimenetelmiä kirjautumistoimintojen testaamiseen.
- test_login_valid testaa kelvollisen kirjautumisyrityksen sähköpostiosoitteella ja salasanalla
- test_login_no_password testaa virheellisen kirjautumisyrityksen ilman salasanan välittämistä
- test_login_no_email testaa virheellisen kirjautumisyrityksen ilman sähköpostin välittämistä.
import pytest import requests import json def test_login_valid(supply_url): url = supply_url + "/login/" data = {'email':'test@test.com','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':'test@test.com'} 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
Suorita testi komennolla py.test -v
Katso tulos muodossa
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
Päivitä testit ja kokeile erilaisia lähtöjä
Yhteenveto
Tässä PyTest-opetusohjelmassa käsitimme
- Asenna pytest käyttämällä pip asennus pytest=2.9.1
- Yksinkertainen pytest-ohjelma ja suorita se py.test-komennolla.
- Väitelauseet, assert x==y, palauttavat joko tosi tai epätosi.
- Miten pytest tunnistaa testitiedostot ja -menetelmät.
- Testaa tiedostoja alkaen testata_ tai päättyen _testata
- Testausmenetelmät alkaen testi
- py.test-komento suorittaa kaikki testitiedostot kyseisessä kansiossa ja alikansioissa. Tietyn tiedoston suorittamiseksi voimme käyttää komentoa py.test
- Suorita testimenetelmien osajoukko
- Testin nimien ryhmittely alimerkkijonon perusteella matching.py.test -k -v suorittaa kaikki testit sen nimessä.
- Suorita testi merkkien avulla. Merkitse testit käyttämällä @pytest.mark. ja suorita testit komennolla pytest -m suorittaa testejä, jotka on merkitty .
- Suorita testit rinnakkain
- Asenna pytest-xdist komennolla pip install pytest-xdist
- Suorita testit komennolla py.test -n NUM, jossa NUM on työntekijöiden lukumäärä
- Kiinnitysmenetelmien luominen koodin suorittamiseksi ennen jokaista testiä merkitsemällä menetelmä @pytest.fixture
- Kiinnitysmenetelmän laajuus on määritetyn tiedoston sisällä.
- Kiinnitysmenetelmää voidaan käyttää useissa testitiedostoissa määrittämällä se conftest.py-tiedostossa.
- Testausmenetelmä voi käyttää Pytest-kiinnitystä käyttämällä sitä syöttöargumenttina.
- Parametriset testit sen suorittamiseksi useita syötteitä vastaan.
@pytest.mark.parametrize("tulo1, input2, output",[(5,5,10),(3,5,12)])
def test_add(tulo1, tulo2, lähtö):
assert input1+input2 == output "epäonnistui"
suorittaa testin syötteillä (5,5,10) ja (3,5,12) - Ohita/xfail-testit käyttämällä @pytets.mark.skip ja @pytest.mark.xfail
- Luo testituloksia XML-muodossa, joka kattaa suoritetun testin tiedot käyttämällä py.test test_sample1.py -v –junitxml=”result.xml”
- Esimerkki pytest-kehyksestä API:n testaamiseen