Учебники

Pytest — группировка тестов

В этой главе мы научимся группировать тесты с помощью маркеров.

Pytest позволяет нам использовать маркеры на тестовых функциях. Маркеры используются для установки различных функций / атрибутов для тестирования функций. Pytest предоставляет множество встроенных маркеров, таких как xfail, пропуск и параметризация. Кроме того, пользователи могут создавать свои собственные имена маркеров. Маркеры применяются к тестам с использованием приведенного ниже синтаксиса:

@pytest.mark.<markername>

Чтобы использовать маркеры, мы должны импортировать модуль pytest в тестовый файл. Мы можем определить собственные имена маркеров для тестов и запустить тесты, имеющие эти имена маркеров.

Для запуска помеченных тестов мы можем использовать следующий синтаксис —

pytest -m <markername> -v

-m <markername> представляет имя маркера тестов, которые должны быть выполнены.

Обновите наши тестовые файлы test_compare.py и test_square.py следующим кодом. Мы определяем 3 маркера — отличный, квадратный, другие .

test_compare.py

import pytest
@pytest.mark.great
def test_greater():
   num = 100
   assert num > 100

@pytest.mark.great
def test_greater_equal():
   num = 100
   assert num >= 100

@pytest.mark.others
def test_less():
   num = 100
   assert num < 200

test_square.py

import pytest
import math

@pytest.mark.square
def test_sqrt():
   num = 25
   assert math.sqrt(num) == 5

@pytest.mark.square
def testsquare():
   num = 7
   assert 7*7 == 40

@pytest.mark.others
   def test_equality():
   assert 10 == 11

Теперь, чтобы запустить тесты, помеченные как другие , выполните следующую команду —

pytest -m others -v

Смотрите результат ниже. Было проведено 2 теста, помеченных как другие .

test_compare.py::test_less PASSED
test_square.py::test_equality FAILED
============================================== FAILURES
==============================================
___________________________________________ test_equality
____________________________________________
   @pytest.mark.others
   def test_equality():
>  assert 10 == 11
E  assert 10 == 11
test_square.py:16: AssertionError
========================== 1 failed, 1 passed, 4 deselected in 0.08 seconds
==========================

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