我无法使用py.test在PyCharm中调试。所有测试套件在“调试模式”下运行正常,但它不会在断点处停止。
我也有py.test作为默认测试运行器。
也许这不重要,但调试在我的Django服务器中正常工作。
有什么想法吗?
picture of enable_breakpoints_and_the_mode_of_pycharm_is_debug
参考文献:
答案 0 :(得分:62)
根据我的情况,我发现了问题所在:
如果--cov
中有pytest.ini
,则pycharm中的断点将无效,删除--cov
中的所有pytest.ini
后,pycharm中的断点可以正常工作。< / p>
原因:
“coverage模块和pycharm的调试器使用相同的跟踪API(sys.settrace) - 它们不能一起工作。” - https://github.com/pytest-dev/pytest-cov/issues/131
参考文献:
答案 1 :(得分:3)
对我来说,解决的办法是在--no-cov
的{{1}}上添加Additional Arguments
。我更新了Run/Debug Configurations
,因此每个新测试都会获得此配置。
只需删除您当前的调试设置即可。
Templates -> Python tests -> pytest
答案 2 :(得分:1)
TL; DR:在“构建,执行,部署”->“ Python调试器”中禁用“兼容Gevent”标志。
似乎在某个时候我在pycharm中启用了“兼容Gevent”调试器,此后pytest-pycharm停止工作。禁用它会使pytest-pycharm重新工作。我希望这能为您中的某些人解决问题。
答案 3 :(得分:0)
我想补充一下,在PyCharm中启动单个测试功能(而不是整个测试文件)的情况下,这些修复似乎不起作用。
在调试单个测试功能而不是整个文件时,我还没有找到在线解决方案来激活断点,如果有人有解决方案,我会很感兴趣。如果我自己发现它,我将尝试更新此帖子。
答案 4 :(得分:0)
我知道您做对了,但是对我来说,实际上将默认测试运行程序设置为pytest
可以解决此问题。
在PyCharm中:Settings
-> Python Integrated Tools
-> Testing section
-> Default test runner
->从下拉菜单->应用中选择pytest
。而且可以立即生效。