Pytest - zaczynając od testu podstawowego
Teraz zaczniemy od naszego pierwszego programu pytest. Najpierw utworzymy katalog, a tym samym utworzymy nasze pliki testowe w katalogu.
Wykonajmy kroki pokazane poniżej -
Utwórz nowy katalog o nazwie automation i przejdź do katalogu w linii poleceń.
Utwórz plik o nazwie test_square.py i dodaj poniższy kod do tego pliku.
import math
def test_sqrt():
num = 25
assert math.sqrt(num) == 5
def testsquare():
num = 7
assert 7*7 == 40
def tesequality():
assert 10 == 11
Uruchom test za pomocą następującego polecenia -
pytest
Powyższe polecenie wygeneruje następujące dane wyjściowe -
test_square.py .F
============================================== FAILURES
==============================================
______________________________________________ testsquare
_____________________________________________
def testsquare():
num=7
> assert 7*7 == 40
E assert (7 * 7) == 40
test_square.py:9: AssertionError
================================= 1 failed, 1 passed in 0.06 seconds
=================================
Zobacz pierwszą linię wyniku. Wyświetla nazwę pliku i wyniki. F oznacza niepowodzenie testu, a kropka (.) Oznacza sukces testu.
Poniżej możemy zobaczyć szczegóły nieudanych testów. Pokaże, przy której instrukcji test się nie powiódł. W naszym przykładzie 7 * 7 jest porównywane pod kątem równości z 40, co jest błędne. Na koniec możemy zobaczyć podsumowanie wykonania testu, 1 nie powiódł się i 1 przeszedł.
Funkcja tesequality nie jest wykonywana, ponieważ pytest nie uzna jej za test, ponieważ jej nazwa nie ma formatu test*.
Teraz wykonaj poniższe polecenie i ponownie zobacz wynik -
pytest -v
-v zwiększa szczegółowość.
test_square.py::test_sqrt PASSED
test_square.py::testsquare FAILED
============================================== FAILURES
==============================================
_____________________________________________ testsquare
_____________________________________________
def testsquare():
num = 7
> assert 7*7 == 40
E assert (7 * 7) == 40
test_square.py:9: AssertionError
================================= 1 failed, 1 passed in 0.04 seconds
=================================
Teraz wynik jest bardziej wyjaśniający, jeśli chodzi o test, który się nie powiódł i test, który przeszedł.
Note - polecenie pytest wykona wszystkie pliki formatu test_* lub *_test w bieżącym katalogu i podkatalogach.