pytest和为什么要避免使用init文件

时间:2015-03-19 20:04:07

标签: python pytest

曾几何时,现在https://docs.pytest.org/en/latest/goodpractices.html的pytest文档曾经说过:

  

避免测试目录中的“__init__.py”文件。这样,您的测试可以轻松地针对已安装的mypkg版本运行,如果它包含测试,则独立于已安装的软件包。

关于这句话我不明白:

  1. 安装的mypkg版本是什么意思?如果我有一个简单的烧瓶应用程序,当你点击本地主机的根目录时只能说“你好世界”,我怎么能联系安装一个应用程序呢?
  2. 安装版本与已安装的软件包有何不同?
  3. “如果包含测试”是什么意思?它与测试发现有关吗?
  4. 有人可以解释一下__init__.py是不是很好吗?

1 个答案:

答案 0 :(得分:3)

如果项目根目录中有一个测试文件夹,其中包含__init__.py,则py.test需要通过向sys.path添加目录来使测试可导入。 那么py.test将为路径插入选择项目根目录,因此它总是首先使源树可导入,这可以在运行测试时隐藏已安装版本中的错误

避免此问题的另一种方法是拥有src文件夹并使用setup.py

中的package_dirs选项