我遇到了一个自定义插件的问题,我正在编写以在第一格式文件中收集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文件中的变量
答案 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:
调用
pytest
与python -m pytest
使用
python -m pytest [...]
代替pytest [...]
运行pytest 产生几乎相同的行为,除了前一个调用 将当前目录添加到`sys.path。另请参阅Calling pytest through python -m pytest.