我使用easy_install在Mac上安装pytest,并开始为一个具有如下文件结构的项目编写测试:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

py运行。在repo目录中进行测试,一切都如您所料。

但是当我在Linux或Windows上尝试同样的事情时(两者都有pytest 2.2.3),每当它第一次从我的应用程序路径导入某些东西时,它就会发出吠叫。例如,from app import some_def_in_app。

我需要编辑我的PATH来运行py。测试这些系统?


当前回答

如果没有工作,请确保test_module.py被列在正确的src目录下。 有时它会给出ModuleNotFoundError,不是因为模块放错了地方,也不是因为export PYTHONPATH="${PWD}:${PYTHONPATH}"不工作,而是因为test_module.py被放在了tests文件夹下的错误目录中。

它应该是递归的1对1映射关系,而不是根文件夹应该命名为“tests”,包含测试代码的文件名应该以“test_”开头, 例如,

./nlu_service/型号/变压器.py

-测试- test_transformers models . py。


这就是我的经历。

其他回答

您可以在项目根中使用PYTHONPATH运行

PYTHONPATH=. py.test

或者使用pip install作为可编辑导入

pip install -e .   # install package using setup.py in editable mode

我也遇到过类似的问题。pytest无法识别安装在我工作的环境中的模块。

我通过在相同的环境中安装pytest来解决这个问题。

此外,如果在虚拟环境中运行pytest,请确保在虚拟环境中安装了pytest模块。激活虚拟环境并运行pip install pytest。

因为没有人建议这样做,你也可以在pytest.ini文件中传递测试的路径:

[pytest]
...
testpaths = repo/tests

参见文档:https://docs.pytest.org/en/6.2.x/customize.html#pytest-ini

Visual Studio Code的副作用:它应该在UI中拾取单元测试。

我也有同样的问题。我通过在我的测试目录中添加一个空的__init__.py文件来修复它。