Можно ли заставить модуль pytest doctest игнорировать файл?
Мы используем pytest для тестирования нашего проекта и включили --doctest-modules
по умолчанию, чтобы собрать все наши тесты со всего проекта.
Однако есть один wsgi.py
который не может быть импортирован во время сбора тестов, но я не могу заставить pytest игнорировать его.
Я пытался положить его в collect_ignore
список в conftest.py
но, очевидно, модуль doctest не использует этот список.
Единственное, что работает, это помещает весь каталог wsgi.py
в norecursedirs
в файле конфигурации Pytest, но это, очевидно, скрывает весь каталог, который я не хочу.
Есть ли способ заставить модуль doctest игнорировать только определенный файл?
1 ответ
Как сказал мастер Андрей,pytest_ignore_collect
должен сделать свое дело. Важно отметить, что вы должны поставитьconftest.py
в корневую папку (из которой вы запускаете тесты).
Пример:
import sys
def pytest_ignore_collect(path):
if sys.version_info[0] > 2:
if str(path).endswith("__py2.py"):
return True
else:
if str(path).endswith("__py3.py"):
return True
Начиная с pytest v4.3.0 существует также --ignore-glob
флаг, позволяющий игнорировать по шаблону. Пример:pytest --doctest-modules --ignore-glob="*__py3.py" dir/
Вы можете использовать ловушку, чтобы условно исключить некоторые папки из обнаружения теста. https://docs.pytest.org/en/latest/writing_plugins.html
def pytest_ignore_collect(path, config):
""" return True to prevent considering this path for collection.
This hook is consulted for all files and directories prior to calling
more specific hooks.
"""