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

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

Давайте выполним шаги, показанные ниже -

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

  • Создайте файл с именем 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 сравнивается с равенством 40, что неверно. В итоге мы видим сводку выполнения теста, 1 не прошел и 1 прошел.

Функция tesequality не выполняется, потому что 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 
=================================

Теперь результат более подробно описывает неудачный и пройденный тест.

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