В этой главе мы научимся группировать тесты с помощью маркеров.
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 ==========================
Точно так же мы можем запускать тесты и с другими маркерами — отлично, сравните