Это должна быть самая простая проблема на земле, но даже после обширных поисков и мастеринга я все еще испытываю глубокие затруднения с поиском "правильного" способа заложить структуру каталогов и правильно запустить 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 и т.д. Следуют чрезвычайно различным соглашениям. Для среднего опытного кодера это должно быть намного проще.