8

我正在为 Django 运行一些测试,并为使用 Selenium 的网站运行一些其他测试。

我对测试框架的选择是惊人的Pytest

为了测试 Django,我目前已经安装了pytest-django 插件,并且 Django 的测试按预期运行,但是现在我回到了我以前不需要 Django 插件的测试。

我开始测试,Django 插件被自动拾取。
我检查了文档并找到解释如何禁用\停用插件的文章,但是当我运行此命令时:

py.test -p no:django 

我收到一条错误消息,指出我的“DJANGO_SETTINGS_MODULE”不在 sys.path 上。

命令如:

py.test --traceconfig

或者

py.test --version

给我同样的错误。看起来 Django 插件越来越深入了?当我只是检查版本或“已安装的插件”时,为什么会调用它?

问题:有什么方法可以在不卸载的情况下暂时停用此插件?

4

2 回答 2

8

这应该有效。当我安装 pytest-2.3.4 并运行时,py.test -p no:django --version我没有遇到 DJANGO_SETTINGS 问题。当我离开-p no:django禁用时,我明白了。如果它不起作用,请链接到 pastebin 上的完整跟踪。

于 2012-11-23T21:16:33.767 回答
0

IIRC这是由于多种因素的结合:

  • 在启动时 py.test 查找 setuptool 入口点“pytest11”
  • 入口点在被激活或停用之前被导入
  • pytest-django(已发布,目前为 1.4)预先加载了 Django 导入
  • 很多 Django 需要在导入时配置设置模块

不幸的是,这在 pytest-django 的发布版本中是不可避免的。最初的答案是:不,在不同的 virtualenvs 中运行 pytest-django 和其他测试。

然而,这也是我们开始研究避免这些问题的插件版本的原因。我认为目前最好的版本是https://github.com/flub/pytest_django的 pytest23 分支。 这个版本的功能非常完整,当然与发布的版本相比,它只需要更多的打磨,主要是在测试和文档。

我相信/希望在接下来的几周内这个分支将被合并和发布,我只需要让 Andreas 看一下并同意。我认为它肯定足够稳定,可以开始使用。

于 2012-11-23T21:22:37.103 回答