6

Что такое conftest.py в Pytest?

11

Я пытаюсь понять, для чего предназначены файлы conftest.py.

В моем (пока небольшом) наборе тестов у меня есть один файл conftest.py в корне проекта. Я использую его для определения фикстур, которые я внедряю в свои тесты.

У меня есть два вопроса:

  1. Правильно ли я использую conftest.py? Есть ли у него другие применения?
  2. Можно ли иметь более одного файла conftest.py? Когда это может понадобиться? Примеры будет очень полезно увидеть.

В более общем смысле, как вы бы определили цель и правильное использование файла(ов) conftest.py в тестовом наборе pytest?

2 ответ(ов)

0

В широком смысле, conftest.py — это локальный плагин для каждой директории. В этом файле вы определяете хуки и фикстуры, специфичные для данной директории. В моем случае есть корневая директория, содержащая специфичные для проекта директории с тестами. Некоторая общая логика размещена в корневом conftest.py, а специфичная для проекта — в своих собственных conftest.py. Я не вижу ничего плохого в хранении фикстур в conftest.py, если они не используются широко (в таком случае я предпочитаю определять их прямо в файлах тестов).

0

Да, использование файла conftest.py для определения фикстур, которые вы подключаете к своим тестам, является корректным. Фикстура обычно используется для подготовки данных для нескольких тестов.

Да, у фикстур есть и другие применения. Фикстура — это функция, которая выполняется pytest перед, а иногда и после, выполнения самих тестовых функций. Код в фикстуре может выполнять любые задачи, которые вам нужны. Например, фикстура может использоваться для получения набора данных, с которым будут работать тесты, или для приведения системы в известное состояние перед выполнением теста.

Вы можете иметь более одного файла conftest.py. Первое, что стоит отметить, это то, что фикстуры можно помещать в отдельные файлы тестов. Однако, чтобы делиться фиктурами между несколькими тестовыми файлами, вам нужно использовать файл conftest.py, находящийся в центре для всех тестов. Фикстуры могут быть доступны любому тесту. Вы можете поместить их в отдельные тестовые файлы, если хотите, чтобы фикстура использовалась только тестами в этом файле.

Кроме того, да, вы можете иметь другие файлы conftest.py в подкаталогах основной директории тестов. Если вы это сделаете, фикстуры, определенные в этих файлах conftest.py, будут доступны для тестов в этом каталоге и подкаталогах.

Наконец, помещая фикстуры в файл conftest.py в корне тестов, вы сделаете их доступными во всех тестовых файлах.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь