无法使用pytest在pycharm中调试

dav*_*ria 33 pytest pycharm

我不能调试在PyCharm使用py.test.所有测试套件在"调试模式"下运行正常,但它不会在断点上停止.

调试模式

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

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

有任何想法吗?

组态 enable_breakpoints_and_the_mode_of_pycharm_is_ debug的图片

参考文献:

pycharm启用致残和去除的断点

运行/调试配置:py.test

Sim*_*Jie 76

对于我的情况,我发现了问题所在:

如果--covpytest.ini,那么在pycharm断点将无法正常工作,删除所有之后--covpytest.ini,在pycharm断点可以工作.

原因:

"coverage模块和pycharm的调试器使用相同的跟踪API(sys.settrace) - 它们不能一起工作." - https://github.com/pytest-dev/pytest-cov/issues/131

参考文献:

如何在启用coverage时在PyCharm中调试py.test

  • `py.test test_dir --no-cov` (5认同)
  • pytest.ini文件在哪里? (3认同)

mrb*_*tle 13

这里或其他地方提到的解决方案都不适合我。

我在不同的文件夹中有同一项目的多个副本。一些副本正常,其他副本则表现出以下行为:

  • 调试器将忽略测试中的任何断点(无论这些断点是否作为单个函数、类、模块、批处理运行)

  • 这些测试调用的实际代码中设置的断点被击中

什么对我有用(4 个损坏的存储库并且还在增加):

__pycache__从不可调试的测试模块所在的目录开始删除项目中文件夹的内容。首先删除.pyc不可调试模块名称的文件。如果这没有帮助,请识别测试中使用的任何自己的导入,找到并删除它们的__pycache__/ 。.pyc(注意:使用文件资源管理器等文件浏览工具,因为 Pycharm 不会在项目视图中显示这些目录。)

如果您仍然不走运或只是懒惰(像我一样),请擦除__pycache__存储库中的所有文件夹。您可以通过命令行/终端执行此操作,只需导航到存储库文件夹,然后:

编辑:根据最近的发现,使描述更加详细,添加了快速擦除提示。后来注意到 @mcsj120 已经在 Antonin 的帖子中建议了这一点,所以向他致敬!

  • 运行命令递归删除`__pycache__`解决了问题。 (2认同)

joa*_*000 9

对我来说固定的是--no-covAdditional Arguments上添加Run/Debug Configurations。我更新了Templates -> Python tests -> pytest,因此每个新测试都会获得此配置。
只需删除您当前的调试设置即可。

在此处输入图片说明

Pycharm 2018.3.x

  • 谢谢,对我有用。这比在接受的答案中建议的停用 `pytest.ini` 中的覆盖更可取。现在从命令行或在 CI 构建期间运行测试仍然会产生覆盖率报告。 (2认同)
  • 问题解决了。但是,对于PyCharm还是陌生的人,我真不知道该怎么去运行/调试配置(导航栏被隐藏了,我不知道...)。 /pycharm/creating-and-editing-run-debug-configurations.html (2认同)
  • 我必须[安装`pytest-cov`来尝试这个](/sf/ask/2440967371/#comment97436285_52295919 )。但是,它对我不起作用。 (2认同)
  • 我将 --no-cov 添加到 kedro 项目中的 pyproject.toml 文件中,它解决了我的问题。谢谢! (2认同)

Ale*_*sio 6

TL;DR:在“构建、执行、部署”->“Python 调试器”中禁用“Gevent 兼容”标志。

似乎在某些时候我在 pycharm 中启用了“Gevent 兼容”调试器,从那时起 pytest-pycharm 停止工作。禁用它将使 pytest-pycharm 再次工作。我希望这能解决你们中的一些人的问题。

  • 我有 PyCharm 2018.2.1,默认情况下该选项已禁用 (3认同)

Or *_*r b 5

我知道您说得对,但对我来说,实际上设置了默认测试运行程序来pytest解决问题。在 PyCharm 中:Settings-> Python Integrated Tools-> Testing section-> Default test runner->pytest从下拉菜单中选择 -> 应用。它立即起作用。


小智 5

对我来说,解决方案是在测试文件夹中创建空的 pytest.ini 文件。完成此操作后,我还可以启动特定功能的调试。