Как мне организовать свои тесты pytest, если я не распространяю их с моим пакетом?
Какпредложено в документации по pytestЯ настроил пакет с намерением нене распространяя мои тесты вместе с моим пакетом:
setup.py
mypkg/
__init__.py
mypkg/
appmodule.py
tests/
test_app.py
...
но я не совсем понимаю, как гарантировать, что эти тесты будут работать правильно, когда они присутствуют (например, в Travis CI или в клонах каталога проекта).
Я хочу, чтобы импорт в моих тестовых сценариях применялся к источнику в соседнемmypkg/
каталог (а не к любомуmypkg
которые могут быть установлены вsite-packages
), но я получаю ошибки, которые меня озадачивают.
Если я последую совету вpytest
документация и не ставьте__init__.py
вtests/
затем с
from __future__ import absolute_import
from mypkg.appmodule import *
я получил
Ошибка импорта: нет модуля с именем mypkg.appmodule
в то время как с
from __future__ import absolute_import
from ..mypkg.appmodule import *
я получил
ValueError: Попытка относительного импорта в не пакет
И если я проигнорирую документацию и включу__init__.py
то с последним я получаю
ValueError: Попытка относительного импорта за пределы пакета верхнего уровня
Только включив__init__.py
и используя
from __future__ import absolute_import
from mypkg.appmodule import *
пройдут ли мои тесты? Но мне не ясно, что это будет импортировать источник из соседнегоmypkg/
каталог, еслиmypkg
установлен вsite-packages
.
Как правильно организовать мойpytest
тесты, чтобы они были отделены от моих проектов и не распространялись вместе с ними, но всегда импортировали смежный источник, а не версию пакета, установленного здесь?