无法使用pytest在pycharm中调试

时间:2016-11-21 11:12:17

标签: pycharm pytest

我无法使用py.test在PyCharm中调试。所有测试套件在“调试模式”下运行正常,但它不会在断点处停止。

Debug Mode

我也有py.test作为默认测试运行器。

也许这不重要,但调试在我的Django服务器中正常工作。

有什么想法吗?

Configuration picture of enable_breakpoints_and_the_mode_of_pycharm_is_debug

参考文献:

pycharm-enabling-disabling-and-removing-breakpoints

Run/Debug Configuration: py.test

5 个答案:

答案 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

参考文献:

How to debug py.test in PyCharm when coverage is enabled

答案 1 :(得分:3)

对我来说,解决的办法是在--no-cov的{​​{1}}上添加Additional Arguments。我更新了Run/Debug Configurations,因此每个新测试都会获得此配置。
只需删除您当前的调试设置即可。

enter image description here

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。而且可以立即生效。