Учебники

Pytest — начиная с базового теста

Теперь мы начнем с нашей первой программы pytest. Сначала мы создадим каталог и тем самым создадим наши тестовые файлы в каталоге.

Давайте следовать шагам, показанным ниже —

  • Создайте новый каталог с именем автоматизации и перейдите в каталог в командной строке.

  • Создайте файл с именем test_square.py и добавьте приведенный ниже код в этот файл.

Создайте новый каталог с именем автоматизации и перейдите в каталог в командной строке.

Создайте файл с именем test_square.py и добавьте приведенный ниже код в этот файл.

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

Запустите тест с помощью следующей команды —

pytest

Приведенная выше команда сгенерирует следующий вывод:

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

Смотрите первую строку результата. Он отображает имя файла и результаты. F обозначает неудачу теста, а точка (.) Обозначает успех теста.

Ниже мы можем увидеть детали неудачных тестов. Он покажет, при каком утверждении тест не пройден. В нашем примере 7 * 7 сравнивается на равенство 49, что неверно. В итоге мы можем увидеть итоги выполнения теста, 1 не пройден и 1 пройден.

Функция tescompare не выполняется, поскольку pytest не будет рассматривать ее как тест, поскольку ее имя не соответствует формату test * .

Теперь выполните приведенную ниже команду и снова увидите результат —

pytest -v

-v увеличивает многословие.

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

Теперь результат более понятен в отношении теста, который не прошел, и теста, который прошел.

Примечание — команда pytest выполнит все файлы формата test_ * или * _test в текущем каталоге и подкаталогах.