Python 如何在py.test中加载自定义插件

Python 如何在py.test中加载自定义插件,python,pytest,Python,Pytest,我在编写一个自定义插件来收集rst格式文件中的py.test结果时遇到问题。最后,我想将这个文件包含到Sphinx文档中 我已经在当前工作目录中的myplugin.py模块中编写了我的插件。然后我打电话 py.test -p myplugin ../mytool/test 以导入结束:没有名为myplugin的模块 我也试着像这样称呼它 py.test -p .myplugin ../mytool/test 像一个相对的进口,但没有成功 如何正确使用插件? 提供有关插件检测的以下信息: 工具

我在编写一个自定义插件来收集rst格式文件中的py.test结果时遇到问题。最后,我想将这个文件包含到Sphinx文档中

我已经在当前工作目录中的
myplugin.py
模块中编写了我的插件。然后我打电话

py.test -p myplugin ../mytool/test
以导入结束:没有名为myplugin的模块

我也试着像这样称呼它

py.test -p .myplugin ../mytool/test
像一个相对的进口,但没有成功

如何正确使用插件? 提供有关插件检测的以下信息:

工具启动时的插件发现顺序pytest在工具启动时以以下方式加载插件模块:
  • 通过加载所有内置插件

  • 通过加载通过setuptools入口点注册的所有插件

  • 通过预扫描命令行中的-p name选项并加载 在实际命令行分析之前指定的插件

  • 通过加载命令行推断的所有conftest.py文件 调用:

如果未指定测试路径,则在以下情况下使用当前目录作为测试路径: 存在,加载conftest.py和test*/conftest.py相对于 第一个测试路径的目录部分。请注意,pytest没有找到 工具启动时,更深嵌套子目录中的conftest.py文件。信息技术 将conftest.py文件保持在顶级通常是一个好主意 测试或项目根目录

  • 通过递归加载pytest_插件指定的所有插件 conftest.py文件中的变量

如果插件不可导入,那是因为它不在
sys.path
上。尝试使用
PYTHONPATH
变量显式添加它:

PYTHONPATH=/path/to/dir/of/myplugin py.test -p myplugin ../mytool/test

如果要从当前目录加载插件,也可以使用
python-m
调用
pytest

python -m pytest -p myplugin
这样,您就不需要显式地设置
PYTHONPATH
。发件人:

调用
pytest
python-m pytest
使用
python-m pytest[…]运行pytest
而不是
pytest[…]
产生几乎相同的行为,除了前一个调用将 将当前目录添加到'sys.path'。另见


事实上,这确实奏效了。谢谢我认为当前的工作目录在默认情况下总是在python路径中。只有将
PYTHONPATH
设置为空字符串时才会出现这种情况。