Использование элементов pytest из верхнего уровня conftest.py в подкаталогах

#python #linux #pytest #fixtures

#python #linux #pytest #приспособления

Вопрос:

Я пытаюсь использовать приспособление из подкаталога, который определен в родительском каталоге conftest.py однако при этом я просто постоянно получаю сообщение об ошибке «приспособление [имя] не найдено». Пример структуры каталогов:

  • Тесты/
    • conftest.py
    • test_1.py
    • test_subdirectory_1/
      • test_subdirectory_2/
        • conftest.py
        • test_2.py

Я хотел бы использовать приспособление, которое имеет область сеанса в оригинале conftest.py (в каталоге Tests/) в test_2.py досье. Однако всякий раз, когда я запускаю test_2.py из папки test_subdirectory_2 он выдает мне ошибку fixture not found.

Я делаю это из командной строки: root@[ip]:/Test/test_subdirectory_1/test_subdirectory/2# pytest test_2.py

и он выплевывает: E Fixture not found.

однако, если я перейду к корневому каталогу и сделаю: root@[ip]:/Test# pytest -k "test_name_from_test_2"

это работает отлично. Мне нужно иметь возможность запускать его из собственного каталога, просто указав имя файла.

В документации Pytest говорится, что этот тип файловой структуры должен быть приемлемым, поскольку предполагается, что тесты могут искать в родительских каталогах дополнительные приспособления. Кто-нибудь может сказать мне, почему это происходит?

Вот платформа / версия, которую я использую: platform linux -- Python 3.8.5, pytest-6.1.0, py-1.9.0, pluggy-0.13.1

Комментарии:

1. Эта суть содержит очень хорошее объяснение того, как использовать приспособления, определенные снаружи contest.py . Я почти уверен, что вы найдете ответы, которые ищете.