Справочник · модуль 12 «Тесты»

Parametrize

Метка pytest.mark.parametrize запускает один тест с разными данными. В отчёте каждый запуск виден отдельно.

Сравнение из жизни

Как один бланк контрольной для всех вариантов.

Пример

$ pytest -v
============================= test session starts ==============================
platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
cachedir: .pytest_cache
rootdir: /home/bit/shop
collecting ... collected 4 items

test_rules.py::test_is_adult[30-True] PASSED                             [ 25%]
test_rules.py::test_is_adult[18-True] PASSED                             [ 50%]
test_rules.py::test_is_adult[17-False] PASSED                            [ 75%]
test_rules.py::test_is_adult[0-False] PASSED                             [100%]
============================== 4 passed in 0.01s ===============================

Учитель в уроке Писать много похожих тестов долго. Для этого есть метка parametrize. В ней список наборов данных: возраст и ожидание. Pytest запускает один тест столько раз, сколько наборов. Если добавить к команде флаг -v, в отчёте виден каждый запуск.

Запомнить

parametrize — как одна контрольная с разными вариантами. Тест один, а данных много.

Частые ошибки новичков на этой теме

Тема из урока 12.3 «Что проверять» курса PythonAZ.

В этом же уроке