Это должна быть самая простая проблема на земле, но даже после обширных поисков и мастеринга я все еще испытываю глубокие затруднения с поиском "правильного" способа заложить структуру каталогов и правильно запустить pytest и т.д.
Скажем, у меня есть программа под названием apple.
|- README.md
|- apple
| |-- __init__.py
| |-- apple.py
| - tests
| |-- test_everything.py
В apple.py содержатся некоторые функции, для примера давайте позвоним один eat()
. И файл test_everything.py
содержит некоторые тесты, такие как assert eat()=="foobar"
. Так хорошо, так легко, но тогда начинается самое интересное:
- Как насчет
__init__.py
в каталоге Apple... правильно? Пусто или что должно быть внутри? - Лучше ли вызывать
py.test
из корневого каталога? Илиpy.test tests
? - Так много проектов имеют
__init__.py
в своем тестовом каталоге, но это явно указано неверно в документации py.test. Так почему Бог почему - Что находится в верхней части файла
test_everything.py
: aimport apple
илиfrom apple import *
? или что-то еще полностью - Вы вызываете функции тогда
eat()
илиapple.eat()
? - Некоторые даже рекомендуют манипулировать
os.path.dirname
в python
Это должно быть легко, но я видел каждую комбинацию вышеизложенного, даже не говоря о токсике и множестве других инструментов. Однако с малейшей ошибкой вы получаете несколько ImportError: No module named 'apple'
или некоторые другие фанки-ошибки.
Что такое "правильный" способ? Совет и существующий код на github и т.д. Следуют чрезвычайно различным соглашениям. Для среднего опытного кодера это должно быть намного проще.