Repository navigation
Pytest
Nikolaev Dmitriy edited this page May 13, 2023
·
7 revisions
pip install pytest
pytest test.py::test_func # запустить конкретный тест в модуле используя уникальный идентификатор узла
pytest test.py::TestClass::test_method # запустить конкретный тест в модуле используя уникальный идентификатор класса
pytest -s # выводит в консоль все print()-сообщения
pytest -v # выводит расширенную информацию о тесте //verbose
pytest -l # выводит значения переменных в момент ошибки
pytest -k "http or quick" # запустить группу тестов на основе совпадения подстроки в имени функции/метода теста //-k <expr>
pytest -m dev # запустит все тесты с маркой dev
pytest --co # позволяет вывести все доступные тесты в директории
pytest --markers # вывод всех доступных марок в проекте
pytest --fixtures # выводит список всех доступных фикстур
pytest -durations=x # вывод x самых долгих тестов
pytest --setup-plan # тесты не запускает, но выводит план запуска тестов
pytest --version # показывает, откуда был импортирован pytest
pytest -h | --help # показать справку по параметрам командной строки и конфигурационного файлаМарки буквально позволяют маркировать тесты, разделять их на группы, управлять отдельными тестами и группами.
Краткий список марок:
-
Марка
skipпозволяет пропустить тест и не выполнять его содержимое. С помощью аргументаreasonследует указывать причину пропуска@pytest.mark.skip() @pytest.mark.skip(reason="Этот тест еще не завершен")
-
Марка
xfailпозволяет указать, что тест заведомо может не работать. При этом тест запустится. Причину также указывают с помощью аргументаreason, а аргументstrictзаставляет тест упасть, если ошибка не произошла сама. Аргументraisesзаставляет тест отработать только в том случае, если в тесте есть какой-то конкретный тип ошибки@pytest.mark.xfail() @pytest.mark.xfail(reason="", strict=True, raises="AssertionError")