PyTesti õpetus: mis on, kuidas installida, raamistik, väited

Mis on PyTest?

PyTest on testimisraamistik, mis võimaldab kasutajatel kirjutada testkoode kasutades Python programmeerimiskeel. See aitab teil kirjutada lihtsaid ja skaleeritavaid testjuhtumeid andmebaaside, API-de või kasutajaliidese jaoks. PyTesti kasutatakse peamiselt API-de testide kirjutamiseks. See aitab kirjutada teste alates lihtsatest ühikutestidest kuni keerukate funktsionaalsete testideni.

Miks kasutada PyTesti?

Mõned pytesti eelised on

  • Selle lihtsa ja lihtsa süntaksi tõttu on väga lihtne alustada.
  • Saab paralleelselt teste läbi viia.
  • Saab käivitada konkreetse testi või testide alamhulga
  • Tuvastage testid automaatselt
  • Jäta testid vahele
  • Avatud lähtekoodiga

Kuidas PyTesti installida

Järgmine on PyTesti installimise protsess:

Step 1) Pytesti saate installida järgmiselt

pip install pytest==2.9.1

Kui installimine on lõppenud, saate seda kinnitada nupuga

py.test -h

See kuvab abi

installige PyTest

Esimene põhiline PyTest

Nüüd õpime PyTesti põhinäite abil kasutama Pytesti.

Looge kaust study_pytest. Loome selles kaustas oma testfailid.

Navigeerige oma käsureal sellesse kausta.

Looge kaustas fail nimega test_sample1.py

Esimene põhiline PyTest

Lisage sellele allolev kood ja salvestage

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" 

Käivitage test käsuga

py.test

Saate väljundi kujul

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

Esimene põhiline PyTest

Siin test_sample1.py F.

F ütleb, et ebaõnnestumine

Punkt(.) ütleb edu.

Rikete jaotises näete ebaõnnestunud meetodit ja rikete rida. Siin x==y tähendab 5==6, mis on vale.

Järgmisena selles PyTesti õpetuses õpime PyTestis kinnitamise kohta.

Väited PyTestis

Pytesti väited on kontrollid, mis tagastavad oleku kas Tõene või Väär. sisse Python Pytest, kui väide testmeetodis ebaõnnestub, peatatakse selle meetodi täitmine seal. Selle testmeetodi järelejäänud koodi ei käivitata ja Pytesti väited jätkuvad järgmise testmeetodiga.

Pytest Asserti näited:

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.

Arvestama

assert x == y,"test failed because x=" + str(x) + " y=" + str(y)

Asetage see kood väite asemel kausta test_file1_method1().

assert x == y,"test failed"

Testi käivitamine annab ebaõnnestumise kui AssertionError: test ebaõnnestus x=5 y=6

Kuidas PyTest tuvastab testfailid ja testimismeetodid

Vaikimisi tuvastab pytest ainult failinimed, mis algavad tähega test_ või lõpetades _testi kui testfailid. Saame selgesõnaliselt mainida ka teisi failinimesid (selgitatakse hiljem). Pytest nõuab alustuseks katsemeetodite nimesid "test.” Kõiki teisi meetodite nimesid eiratakse isegi siis, kui palume neid meetodeid selgesõnaliselt käivitada.

Vaadake mõnda näidet kehtivate ja kehtetute pytest failinimede kohta

test_login.py - valid
login_test.py - valid
testlogin.py -invalid
logintest.py -invalid

Märkus. Jah, me võime selgesõnaliselt paluda pytestil valida testlogin.py ja logintest.py

Vaadake mõnda näidet kehtivate ja kehtetute pytesti katsemeetodite kohta

def test_file1_method1(): - valid
def testfile1_method1(): - valid
def file1_method1(): - invalid	

Märkus. Isegi kui me selgelt mainime file1_method1() pytest ei käivita seda meetodit.

Käivitage mitu testi konkreetsest failist ja mitmest failist

Praegu on meil kaustas study_pytest fail test_sample1.py. Oletame, et meil on mitu faili, ütleme test_sample2.py, test_sample3.py. Kõigi kaustas ja alamkaustades olevate failide testide käivitamiseks peame lihtsalt käivitama käsu pytest.

py.test

See käivitab selles kaustas ja selle kausta all olevates alamkaustades kõik failinimed, mis algavad tähega test_ ja lõpuga _test.

Testide käivitamiseks ainult konkreetsest failist saame kasutada faili py.test

py.test test_sample1.py

Käivitage PyTestiga kogu testi alamhulk

Mõnikord ei taha me kogu testikomplekti käivitada. Pytest võimaldab meil käivitada spetsiifilisi teste. Saame seda teha kahel viisil

  • Testinimede rühmitamine alamstringi sobitamise järgi
  • Testide rühmitamine markerite järgi

Meil on juba test_sample1.py. Looge fail test_sample2.py ja lisage sellele allolev kood

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"

Nii on meil praegu

• test_sample1.py
• test_file1_method1()
• test_file1_method2()
• test_sample2.py
• test_file2_method1()
• test_file2_method2()

Valik 1) Käivitage testid alamstringi sobitamise teel

Siin peame käivitama kõigi testide, mille nimes on meetod1, käivitamiseks

py.test -k method1 -v
-k <expression> is used to represent the substring to match
-v increases the verbosity

Nii et py.test -k meetod1 -v käivitamine annab teile järgmise tulemuse

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 ===============================

Siit on näha lõpu poole 2 testi tühistas '-kmethod1' mis on test_fail1_meetod2 ja test_fail2_meetod2

Proovige joosta erinevate kombinatsioonidega, näiteks: -

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'

Variant 2) Käivitage testid markerite järgi

Pytest võimaldab meil määrata testimeetoditele erinevaid atribuute, kasutades pytest markereid @pytest.mark. Testfailis markerite kasutamiseks peame importima testfailidele pytest.

Siin rakendame testimismeetoditele erinevaid markerite nimesid ja käivitame markerite nimede põhjal spetsiifilisi teste. Saame defineerida iga testinime markerid kasutades

@pytest.mark.<name>.			

Määratleme testimeetodite jaoks markerid set1 ja set2 ning käivitame testi markerite nimede abil. Värskendage testfaile järgmise koodiga

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"

Saame märgitud testi käivitada

py.test -m <name>
-m <name> mentions the marker name

Käivitage py.test -m set1. See käivitab meetodid test_file1_method1, test_file2_method1, test_file2_method2.

Käivitades py.test -m set2, käivitatakse test_file1_method2.

Käivitage teste paralleelselt Pytestiga

Tavaliselt on testikomplektil mitu testfaili ja sadu testmeetodeid, mille käivitamine võtab palju aega. Pytest võimaldab meil paralleelselt teste käivitada.

Selleks peame esmalt käivitades installima pytest-xdist

pip install pytest-xdist

Käivitage teste paralleelselt Pytestiga

Saate nüüd teste läbi viia

py.test -n 4

-n käivitab testid, kasutades mitut töötajat. Ülaltoodud käsus on testi läbiviimiseks 4 töötajat.

Pytesti kinnitused

Fixtures kasutatakse siis, kui tahame enne iga katsemeetodit mõnda koodi käivitada. Nii et igas testis sama koodi kordamise asemel määratleme kinnitused. Tavaliselt kasutatakse seadmeid andmebaasiühenduste lähtestamiseks, baasi läbimiseks jne

Meetod märgitakse Pytesti kinnituseks, märgistades

@pytest.fixture

Katsemeetod võib kasutada Pytesti kinnitust, mainides kinnitust sisendparameetrina.

Looge järgmise koodiga uus fail test_basic_fixture.py

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"

Siin

  • Meil on seade nimega supply_AA_BB_CC. See meetod tagastab 3 väärtusega loendi.
  • Meil on 3 testimismeetodit, mida võrreldakse iga väärtusega.

Igal testimisfunktsioonil on sisendargument, mille nimi ühtib saadaoleva kinnitusega. Seejärel kutsub Pytest välja vastava kinnitusmeetodi ja tagastatud väärtused salvestatakse sisendargumendis, siin on loend [25,35,45]. Nüüd kasutatakse loendi üksusi võrdluseks katsemeetodites.

Nüüd käivitage test ja vaadake tulemust

 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 =================================

Test test_comparewithBB on läbitud, kuna zz=BB=35 ja ülejäänud 2 testi ebaõnnestusid.

Kinnitusmeetodil on ulatus ainult selles testfailis, mis see on määratletud. Kui proovime mõnes muus testfailis olevale kinnitusele juurde pääseda, kuvatakse tõrketeade, milles öeldakse kinnitus 'supply_AA_BB_CC' ei leitud teistes failides olevate katsemeetodite jaoks.

Sama kinnitusvahendi kasutamiseks mitme testfaili vastu loome kinnitusmeetodid failis nimega conftest.py.

Vaatame seda alloleva PyTesti näite abil. Looge 3 faili conftest.py, test_basic_fixture.py, test_basic_fixture2.py järgmise koodiga

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 otsib esmalt kinnitust testfailist ja kui seda ei leita, siis failist conftest.py

Alloleva tulemuse saamiseks käivitage test käsuga py.test -k test_comparewith -v

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

Pytesti parameetriline test

Testi parameetrite määramise eesmärk on käivitada test mitme argumentide komplekti suhtes. Seda saame teha @pytest.mark.parametrize abil.

Näeme seda alloleva PyTesti näitega. Siin edastame testimismeetodile 3 argumenti. See testmeetod lisab esimesed 2 argumenti ja võrdleb seda 3. argumendiga.

Looge alloleva koodiga testfail test_addition.py

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"

Siin aktsepteerib testimismeetod 3 argumenti – input1, input2, output. See lisab sisend1 ja sisend2 ning võrdleb väljundiga.

Käivitame testi käsuga py.test -k test_add -v ja vaatame tulemust

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

Näete 2 korda tehtud teste – üks kontrollib 5+5 ==10 ja teine ​​kontroll 3+5 ==12

test_addition.py::test_add[5-5-10] SÕIDUD

test_addition.py::test_add[3-5-12] ERUS

Pytest Xfail / Jäta testid vahele

On olukordi, kus me ei soovi testi läbi viia või a testjuhtum ei ole konkreetse aja jaoks asjakohane. Sellistes olukordades on meil võimalus test X ebaõnnestuda või testid vahele jätta

Test xfailed sooritatakse, kuid seda ei loeta osaliseks ebaõnnestunud või läbitud testiks. Kui see test ebaõnnestub, seda ei kuvata. Saame testid läbi kukkuda, kasutades

@pytest.mark.xfail.

Testi vahelejätmine tähendab, et testi ei teostata. Saame testid vahele jätta kasutades

@pytest.mark.skip.

Muutke faili test_addition.py alloleva koodiga

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"

Siin

  • test_add_1 ja test_add_2 jäetakse vahele ja neid ei käivitata.
  • test_add_3 ja test_add_4 on xfailed. Need testid viiakse läbi ja need on osa testidest xfailed (testi ebaõnnestumisel) või xpassed (testi läbimise korral). Ebaõnnestumisel ei ole jälgegi.
  • Käivitatakse test_add_5 ja test_add_6 ning test_add_6 teatab tõrkest jälgimisega, kui test_add_5 läbib

Käivitage test käsuga py.test test_addition.py -v ja vaadake tulemust

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 =================

Tulemused XML

Saame luua XML-vormingus testitulemusi, mida saame edastada pideva integratsiooni serveritele edasiseks töötlemiseks jne. Seda saab teha

py.test test_sample1.py -v –junitxml=”result.xml”

Tulemus.xml salvestab testi täitmise tulemuse. Otsige altpoolt tulemust.xml

<?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>

Alates näeme kokku kahte testi, millest üks on ebaõnnestunud. Selle all näete iga sooritatud testi üksikasju silt.

Pytesti raamistik API testimine

Nüüd loome API testimiseks väikese pytesti raamistiku. Siin kasutatav API on tasuta https://reqres.in/. See veebisait on mõeldud ainult testitava API pakkumiseks. See veebisait ei salvesta meie andmeid.

Siin kirjutame mõned testid

  • loetledes mõned kasutajad
  • kasutajatega sisse logima

Looge allpool olevad failid antud koodiga

conftest.py – omama kinnitust, mis annab kõigi katsemeetodite jaoks baas-URL-i

import pytest
@pytest.fixture
def supply_url():
	return "https://reqres.in/api"

test_list_user.py – sisaldab testimismeetodeid kehtivate ja kehtetute kasutajate loetlemiseks

  • test_list_valid_user testib õige kasutaja toomist ja kontrollib vastust
  • test_list_invaliduser testib vale kasutaja toomist ja kontrollib vastust
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 – sisaldab testmeetodeid sisselogimisfunktsioonide testimiseks.

  • test_login_valid testib kehtivat sisselogimiskatset e-posti ja parooliga
  • test_login_no_password testib kehtetut sisselogimiskatset ilma parooli edastamata
  • test_login_no_email testib kehtetut sisselogimiskatset ilma meilisõnumit edastamata.
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

Käivitage test kasutades py.test -v

Vaata tulemust kui

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

Värskendage teste ja proovige erinevaid väljundeid

kokkuvõte

Selles PyTesti õpetuses käsitlesime

  • Installige pytest kasutades pip install pytest=2.9.1
  • Lihtne pytest programm ja käivitage see käsuga py.test.
  • Väitelaused, assert x==y, tagastavad kas tõese või väära.
  • Kuidas pytest tuvastab testfailid ja -meetodid.
  • Testige faile, mis algavad tähega test_ või lõpetades _testi
  • Katsemeetodid alates test
  • py.test käsk käivitab kõik selles kaustas ja alamkaustades olevad testfailid. Konkreetse faili käivitamiseks saame kasutada käsku py.test
  • Käivitage testmeetodite alamhulk
  • Testinimede rühmitamine alamstringi matching.py.test -k järgi -v käivitab kõik testid, millel on selle nimel.
  • Käivitage test markerite järgi. Märkige testid @pytest.mark abil. ja käivitage testid, kasutades pytest -m testide käivitamiseks, mis on märgitud kui .
  • Käivitage testid paralleelselt
  • Installige pytest-xdist, kasutades pip install pytest-xdist
  • Käivitage testid, kasutades käsku py.test -n NUM, kus NUM on töötajate arv
  • Kinnitusmeetodite loomine koodi käivitamiseks enne iga testi, märkides meetodi @pytest.fixture
  • Kinnitusmeetodi ulatus on määratletud failis.
  • Kinnitusmeetodile pääseb juurde mitme testfaili kaudu, määrates selle failis conftest.py.
  • Testmeetod pääseb Pytesti kinnitusele juurde, kasutades seda sisendargumendina.
  • Testide parameetrite määramine, et seda käitada mitme sisendikomplekti vastu.
    @pytest.mark.parametrize(“sisend1, sisend2, väljund”,[(5,5,10),(3,5,12)])
    def test_add(sisend1, sisend2, väljund):
    kinnitada sisend1+sisend2 == väljund "ebaõnnestunud"
    käivitab testi sisenditega (5,5,10) ja (3,5,12)
  • Jäta vahele/xfail testid, kasutades @pytets.mark.skip ja @pytest.mark.xfail
  • Looge testitulemused XML-vormingus, mis hõlmab teostatud testi üksikasju, kasutades faili py.test test_sample1.py -v –junitxml=”result.xml”
  • Pytesti raamistiku näidis API testimiseks

Võta see postitus kokku järgmiselt: