pytest.ini
Форматы файлов конфигурации
Многие настройки pytest можно задать в файле конфигурации , который по соглашению находится в корневом каталоге вашего репозитория или в папке с вашими тестами.
Краткий пример файлов конфигурации, поддерживаемый pytest:
[pytest]
addopts =
--capture=no
-p no:cacheprovider
--pdbcls=IPython.terminal.debugger:TerminalPdb
--alluredir=allure_reports
--reruns=1
filterwarnings =
ignore::pytest.PytestWarning
ignore:.*U.*mode is deprecated:DeprecationWarning
junit_family = legacy
python_files = *Test.py*
python_classes = Test* *Test* *Test *Tests *Suite
python_functions = *Test* *test*
markers =
marker1: custom marker
marker2: custom marker
marker3: custom marker
marker_test_suite: custom marker
expected_failure: custom marker
local: custom marker
remote: custom marker
offline: custom marker
develop: custom marker
qa: custom marker
ci: custom marker
e2e: custom marker
ready: custom marker
smoke: custom marker
deploy: custom marker
active: custom marker
master: custom marker
release: custom marker
staging: custom marker
production: custom marker
addopts
addopts
Добавьте указанное OPTS
в набор аргументов командной строки, как если бы они были указаны пользователем. Пример: если у вас есть содержимое этого ini-файла:
# content of pytest.ini
[pytest]
addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
выдача на самом деле означает:pytest test_hello.py
pytest --maxfail=2 -rf test_hello.py
По умолчанию параметры не добавляются.
В нашей системе в базовый pytest.ini файл в строку addopts добавлены
--alluredir
- для сохранения отчётов Allure по умолчанию
--reruns
- для перезапуска упавших тестов
filterwarnings
filterwarnings
Задает список фильтров и действий, которые следует предпринять для совпадающих предупреждений. По умолчанию все предупреждения, выдаваемые во время тестового сеанса, будут отображаться в сводке в конце тестового сеанса.
# content of pytest.ini
[pytest]
filterwarnings =
error
ignore::DeprecationWarning
Это говорит pytest игнорировать предупреждения об устаревании и превращать все остальные предупреждения в ошибки. Дополнительную информацию см. в разделе «Захват предупреждений» .
junit_family
junit_family
Новое в версии 4.2.
Изменено в версии 6.1: значение по умолчанию изменено на xunit2
.
Настраивает формат сгенерированного XML-файла JUnit. Возможные варианты:
xunit1
(илиlegacy
): производит вывод в старом стиле, совместимый с форматом xunit 1.0.xunit2
: производит вывод в стиле xunit 2.0 , который должен быть более совместимым с последними версиями Jenkins. Это значение по умолчанию .
[pytest]
junit_family = xunit2
python_files
python_files
Один или несколько шаблонов файлов в стиле Glob, определяющих, какие файлы Python считаются тестовыми модулями. Найдите несколько шаблонов шаров, добавив пробел между шаблонами:
[pytest]
python_files = test_*.py check_*.py example_*.py
Или по одному на строку:
[pytest]
python_files =
test_*.py
check_*.py
example_*.py
По умолчанию файлы, соответствующие test_*.py
и *_test.py
, будут считаться тестовыми модулями.
python_classes
python_classes
Один или несколько префиксов имен или шаблонов в стиле глобусов, определяющих, какие классы рассматриваются для тестовой коллекции. Найдите несколько шаблонов шаров, добавив пробел между шаблонами. По умолчанию pytest будет рассматривать любой класс с префиксом Test
как тестовую коллекцию. Вот пример того, как собирать тесты из классов, оканчивающихся на Suite
:
[pytest]
python_classes = *Suite
Обратите внимание, что unittest.TestCase
производные классы всегда собираются независимо от этого параметра, так как unittest
для сбора этих тестов используется собственная структура сбора.
python_functions
python_functions
Один или несколько префиксов имен или шаблонов glob, определяющих, какие тестовые функции и методы считаются тестами. Найдите несколько шаблонов шаров, добавив пробел между шаблонами. По умолчанию pytest будет рассматривать любую функцию с префиксом test
как тест. Вот пример того, как собирать тестовые функции и методы, оканчивающиеся на _test
:
[pytest]
python_functions = *_test
Обратите внимание, что это не влияет на методы, которые живут в производном классе, поскольку для сбора этих тестов используется собственная структура коллекции.unittest .TestCaseunittest
Более подробные примеры см. в разделе Изменение соглашений об именах .
markers
Когда используются аргументы командной строки --strict-markers
или --strict
, разрешены только известные маркеры, определенные в коде ядром pytest или каким-либо плагином.
Вы можете перечислить дополнительные маркеры в этом параметре, чтобы добавить их в белый список, и в этом случае вы, вероятно, захотите добавить --strict-markers
, чтобы addopts
избежать будущих регрессий:
[pytest]
addopts = --strict-markers
markers =
slow
serial
Примечание
Использование --strict-markers
является весьма предпочтительным. --strict
был сохранен только для обратной совместимости и может сбивать с толку других, поскольку он применяется только к маркерам, а не к другим параметрам.
Если вас интересует больше информации о параметрах файл , переходите в официальную документацию API Reference
Last updated
Was this helpful?