我有一个非常简单的测试脚本,只是为了学习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本身导致了这个问题。
答案 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;单击“安装包”按钮
重新运行,现在它应该工作