gpt4 book ai didi

visual-studio-code - 我怎样才能让 pytest 不捕获异常

转载 作者:行者123 更新时间:2023-12-03 18:33:54 25 4
gpt4 key购买 nike

当我在 vscode 调试器中运行 pytest 并选中“Uncaught Exceptions”并且有测试错误时,不会发生未捕获的异常,因为 pytest 捕获它们并报告结果。我怎么能告诉 pytest 只让异常发生?以便我可以在 vscode 调试器中捕获它们?
基本上我想要像 --pdb 这样的行为但我希望它启动 vscode 调试器而不是 pdb。旗帜--pdbcls听起来很有希望但不确定是什么 <module>:<class>给它。
注意:通常我只会让它在引发异常时中断。但是我们的代码有大量引发但捕获的异常,所以这个选项没有用。
这是在调试 pytest 测试时引发 AssertionError 时 vscode 不会中断的视频:
enter image description here
@rioV8 下面的建议确实打破了异常,但由于某种原因,没有堆栈,这意味着您无法从那里进行调试:
enter image description here
我一定遗漏了一些东西,因为似乎没有其他人需要这种能力。但对我来说,这似乎绝对是测试框架和调试器可以做的最基本的最简单的事情:作为开发人员,我想从出现错误的地方进行调试。
人们使用带有 pytest 的调试器肯定有一些完全不同的方式,我忽略了一些明显的技术。

最佳答案

我养了an issue使用 pytest,他们提出了一个可行的建议。将此添加到您的 conftest.py :

import os
import pytest

if os.getenv('_PYTEST_RAISE', "0") != "0":

@pytest.hookimpl(tryfirst=True)
def pytest_exception_interact(call):
raise call.excinfo.value

@pytest.hookimpl(tryfirst=True)
def pytest_internalerror(excinfo):
raise excinfo.value
然后在您的 "request": "test" launch.json 您可以切换该环境变量:
    {
"name": "Debug Tests",
"type": "python",
"request": "test",
"console": "integratedTerminal",
"justMyCode": true,
"env": {
"_PYTEST_RAISE": "1"
},
}
_PYTEST_RAISE已设置,您只检查 未捕获的异常 框,您将在未捕获的异常之前未引发的地方中断。
我也开了 an issuedebugpy他们有一些想法,但今天没有解决方案。 _PYTEST_RAISE技巧 100% 为我解决了这个问题。

关于visual-studio-code - 我怎样才能让 pytest 不捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62419998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com