Представьте простую структуру папок:
my_folder/
__init__.py
funcs.py
tests/
test_funcs.py
funcs.py:
def f():
return 2
__ init__.py:
from funcs import f
test_funcs.py:
from funcs import f
def test_f():
assert f() == 2
Это один из предложенных способов в документации: https://pytest.readthedocs.io/en/reorganize-docs/new-docs/user/directory_structure.html
Но когда я запускаю pytest изmy_folder
:
tests/test_funcs.py:1: in <module>
from funcs import f
E ModuleNotFoundError: No module named 'funcs'
Это странно, потому что я подумал бы, что pytest
задает путь, с которого он работает, поэтому ошибки такого рода не возникают без ручной обработки.
Документация также не дает никаких указаний на это ... Они просто говорят:
Обычно вы можете запускать тесты, указывая на каталоги тестов или модули:
pytest tests/test_appmodule.py # for external test dirs
pytest src/tests/test_appmodule.py # for inlined test dirs
pytest src # run tests in all below test directories
pytest # run all tests below current dir
Чего мне не хватает?