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

时间:2014-06-11 15:19:51

标签: python pytest

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

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

py.test -p myplugin ../mytool/test

ImportError: No module named myplugin结尾。

我也试过把它称为

py.test -p .myplugin ../mytool/test

喜欢相对导入,但没有成功。

如何正确使用插件?

Docs提供有关插件检测的以下信息:

  

工具启动时的插件发现顺序pytest以下列方式在工具启动时加载插件模块:

     
      
  • 加载所有内置插件

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

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

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

  •   
     

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

python -m pytest -p myplugin

这样您就不需要明确设置PYTHONPATH。来自the docs

  

调用pytestpython -m pytest

     

使用python -m pytest [...]代替pytest [...]运行pytest   产生几乎相同的行为,除了前一个调用   将当前目录添加到`sys.path。另请参阅Calling pytest through python -m pytest.