pycharm pytestrunner PluginManager意外的关键字参数

时间:2013-10-07 23:49:34

标签: python pycharm pytest

我有一个非常简单的测试脚本,只是为了学习pytest,tmp.py:

def square(x):
    return x*x
def test_square():
    assert square(4) == 16

使用Pycharm运行此脚本,我已经配置了我的项目设置,以便pytest用作我的默认测试运行器。当我运行上面的代码时,我收到以下错误:

/Users/mingxiao/webdav_2.7.5/bin/python /Applications/PyCharm.app/helpers/pycharm/pytestrunner.py -p pytest_teamcity /Users/mingxiao/dev/juggernaut/src/integrations/webDAV/demo/tmp.py "-k test_square"
Testing started at 4:41 PM ...
Traceback (most recent call last):
  File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 51, in <module>
    main()
  File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 20, in main
    _pluginmanager = PluginManager(load=True)
TypeError: __init__() got an unexpected keyword argument 'load'

Process finished with exit code 1

我正在运行PyCharm 3.0专业版,pytest 2.4.2和python 2.7.5。似乎它的PyCharm本身导致了这个问题。

4 个答案:

答案 0 :(得分:11)

它似乎是PyCharm和py.test 2.4.x之间的不兼容性。如果你安装py.test 2.3.5(例如,pip install pytest==2.3.5)它可以正常工作。我建议向JetBrains提交错误报告。

答案 1 :(得分:2)

PyCharm pytest helper似乎与较新的pytest不兼容。 在他们修复它之前,用py.test脚本的内容替换它就可以了。

Helper位于PyCharm.app/helpers/pycharm/pytestrunner.py(尝试运行测试时可以看到此路径)。只需将cat `which py.test`的输出放入其中,对我来说就是:

  __requires__ = 'pytest==2.5.1'
  import sys
  from pkg_resources import load_entry_point

  if __name__ == '__main__':
      sys.exit(
          load_entry_point('pytest==2.5.1', 'console_scripts', 'py.test')()
      )

答案 2 :(得分:1)

似乎问题是在pycharm tracker http://youtrack.jetbrains.com/issue/PY-11235

中创建的

答案 3 :(得分:0)

在PyCharm中,通过以下方式将pytest添加到项目中: 设置 - &gt;项目口译员 - &gt;点击加号绿色图标 - &gt;搜索“pytests” - &gt;单击“安装包”按钮

重新运行,现在它应该工作