> For the complete documentation index, see [llms.txt](https://igor-19.gitbook.io/qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://igor-19.gitbook.io/qa/avtomatizaciya-testirovaniya/python/pytest/pytest.ini.md).

# pytest.ini

### Форматы файлов конфигурации&#x20;

Многие [настройки pytest](https://docs.pytest.org/en/6.2.x/reference.html#ini-options-ref) можно задать в *файле конфигурации* , который по соглашению находится в корневом каталоге вашего репозитория или в папке с вашими тестами.

Краткий пример файлов конфигурации, поддерживаемый 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 игнорировать предупреждения об устаревании и превращать все остальные предупреждения в ошибки. Дополнительную информацию см. в [разделе «Захват предупреждений»](https://docs.pytest.org/en/6.2.x/warnings.html#warnings) .

### `junit_family`

Новое в версии 4.2.

Изменено в версии 6.1: значение по умолчанию изменено на `xunit2`.

Настраивает формат сгенерированного XML-файла JUnit. Возможные варианты:

* `xunit1`(или `legacy`): производит вывод в старом стиле, совместимый с форматом xunit 1.0.
* `xunit2`: производит [вывод в стиле xunit 2.0](https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd) , который должен быть более совместимым с последними версиями 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`, будут считаться тестовыми модулями.<br>

### `python_classes`

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

```
[pytest]
python_classes = *Suite
```

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

<br>

### `python_functions`

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

```
[pytest]
python_functions = *_test
```

Обратите внимание, что это не влияет на методы, которые живут в производном классе, поскольку для сбора этих тестов используется собственная структура коллекции.`unittest .TestCaseunittest`

Более подробные примеры см. в разделе [Изменение соглашений об именах .](https://docs.pytest.org/en/6.2.x/example/pythoncollection.html#change-naming-conventions)

`markers`

Когда используются аргументы командной строки `--strict-markers`или `--strict`, разрешены только известные маркеры, определенные в коде ядром pytest или каким-либо плагином.

Вы можете перечислить дополнительные маркеры в этом параметре, чтобы добавить их в белый список, и в этом случае вы, вероятно, захотите добавить `--strict-markers`, чтобы `addopts` избежать будущих регрессий:

```
[pytest]
addopts = --strict-markers
markers =
    slow
    serial
```

Примечание

Использование `--strict-markers`является весьма предпочтительным. `--strict`был сохранен только для обратной совместимости и может сбивать с толку других, поскольку он применяется только к маркерам, а не к другим параметрам.<br>

Если вас интересует больше информации о параметрах файл , переходите в официальную документацию [API Reference](https://docs.pytest.org/en/6.2.x/reference.html#ini-options-ref)
