pytest 以及为什么避免初始化文件

Luc*_*arr 4 python pytest

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

\n\n
\n

__init__.py避免测试目录中的\xe2\x80\x9c \xe2\x80\x9d 文件。这样您的测试就可以轻松地针对已安装的版本运行mypkg,无论安装的包是否包含测试,都独立于该包。

\n
\n\n

我不明白以下引用:

\n\n
    \n
  1. 安装版本是什么意思mypkg?如果我有一个简单的 Flask 应用程序,当您在本地主机上点击根目录时仅显示“hello world”,我如何关联安装应用程序?
  2. \n
  3. 安装版本与安装包有何不同?
  4. \n
  5. “如果包含测试或不包含测试”是什么意思?与测试发现有关吗?
  6. \n
  7. 有人可以实际解释如何没有__init__.py是好的吗?
  8. \n
\n

小智 5

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

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

  • 如果您的工作目录放入 pythonpath,那么您将测试可能隐藏安装脚本中错误的工作目录,而不是测试已安装的软件包 (2认同)