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

Добавьте указанное 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

Задает список фильтров и действий, которые следует предпринять для совпадающих предупреждений. По умолчанию все предупреждения, выдаваемые во время тестового сеанса, будут отображаться в сводке в конце тестового сеанса.

# content of pytest.ini
[pytest]
filterwarnings =
    error
    ignore::DeprecationWarning

Это говорит pytest игнорировать предупреждения об устаревании и превращать все остальные предупреждения в ошибки. Дополнительную информацию см. в разделе «Захват предупреждений» .

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

Один или несколько шаблонов файлов в стиле 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

Один или несколько префиксов имен или шаблонов в стиле глобусов, определяющих, какие классы рассматриваются для тестовой коллекции. Найдите несколько шаблонов шаров, добавив пробел между шаблонами. По умолчанию pytest будет рассматривать любой класс с префиксом Testкак тестовую коллекцию. Вот пример того, как собирать тесты из классов, оканчивающихся на Suite:

[pytest]
python_classes = *Suite

Обратите внимание, что unittest.TestCaseпроизводные классы всегда собираются независимо от этого параметра, так как unittestдля сбора этих тестов используется собственная структура сбора.

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