конфигурация pytest в файле pytest.ini не регистрируется, когда файл pytest.ini находится в подкаталоге tests, а не в корневом каталоге проекта

#python #pytest

#python #pytest

Вопрос:

pytest выдает предупреждение из-за неизвестной пользовательской метки при запуске моего набора тестов, несмотря на (надеюсь) правильную регистрацию в соответствии с документацией pytest (см. https://docs.pytest.org/en/stable/mark.html#registering-marks ).

Структура моего проекта Python (упрощена для этого запроса):

 my_project/
    src/
    tests/
        integration/
        unit/
        conftest.py
        pytest.ini
  

Мой pytest.ini (опять же, упрощенный):

 # pytest.ini
[pytest]
markers =
    incremental: marks related sequential tests to xfail after an earlier failure
  

поскольку my conftest.py содержит @pytest.mark.incremental рецепт, описанный в документации pytest (см. https://docs.pytest.org/en/latest/example/simple.html#incremental-testing-test-steps ).

Когда я запускаю pytest из командной строки из корневого каталога моего проекта (т. Е. /my_project/ $ pytest ), pytest выдает следующее предупреждение:

 PytestUnknownMarkWarning: Unknown pytest.mark.incremental - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
    @pytest.mark.incremental

-- Docs: https://docs.pytest.org/en/stable/warnings.html
  

Однако, если я скажу pytest запустить каталог tests (т. Е. /my_project/ $ pytest tests ), Я не получу такого предупреждения. Аналогично, если я перемещаю свой pytest.ini файл из каталога tests обратно в корневой каталог проекта, я снова не получаю сообщение об ошибке.

Есть ли способ настроить pytest, чтобы я мог сохранить свою структуру, tests/pytest.ini чтобы избежать чрезмерного загромождения корневого каталога проекта, при этом гарантируя, что мой pytest.ini файл правильно считывается pytest, когда я просто запускаю /my_project/ $ pytest из командной строки?

Дополнительная информация может быть полезной:

 (my-project-env) /Users/me/Documents/my_project/ $ pytest
============================================= test session starts =============================================
platform darwin -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /Users/me/Documents/my_project
  

Ответ №1:

Я знаю, что это старый вопрос, но могу ли я предложить вам запустить pytest его из папки, в которую вы поместили свой pytest.ini файл?

 cd tests
pytest 
  

Я думаю, что это может решить вашу проблему.