这应该是世上最容易的问题之一,但即便经过了大量的搜索和尝试,我仍然在为找到一个“正确”的方法来布置目录结构并成功地运行pytest等工具而苦恼。
假设我有一个叫做apple的程序。
|- README.md
|- apple
| |-- __init__.py
| |-- apple.py
| - tests
| |-- test_everything.py
apple.py包含一些函数,例如我们可以称其为eat()
。而test_everything.py文件包含一些测试,如assert eat() ==“foobar”
。到这里还好,但接下来就有趣了:
apple
目录中的__init__.py
应该是什么?空的还是要加入内容?- 从根目录调用
py.test
好还是从tests
目录下调用更好? - 许多项目在其测试目录中都有
__init__.py
文件,但在py.test文档中明确说明这是错误的。为什么会这样? test_everything.py
文件的顶部应该是一个import apple
还是from apple import *
?还是其他的?- 您是通过
eat()
还是apple.eat()
来调用函数的? - 甚至有人建议在python中操纵
os.path.dirname
。
这似乎很容易,但我见过上述每种组合方式,更不用说tox和其他工具了。但只要稍有错误,你就会遇到一些奇怪的错误,比如ImportError: No module named 'apple'
。
什么是“正确”的方法?github等现有代码和建议遵循极其不同的惯例。对于中等经验的程序员来说,这应该会容易得多。