在 VS Code 中,在“测试”选项卡中运行 pytest 时如何禁用 justMyCode

Kir*_*hxh 10 debugging pytest visual-studio-code

通过 GUI 调试单元测试时,我不知道如何配置 VS Code 以单步执行第三方代码。
注意:我使用工作区。

在此输入图像描述


编辑:目前作为解决方法,我可以使用“运行和调试选项卡”中的此配置,我必须指定要运行的测试:

"configurations": [
    {
        "name": "Debug specific test",
        "type": "python",
        "module": "pytest",
        "request": "launch",
        "purpose": ["debug-test"],
        "console": "integratedTerminal",
        "justMyCode": false,
        "args": [
            "explorer/test/test_projects_controller.py::TestProjectsController::test_get_metadata"
        ]
    }
]``
Run Code Online (Sandbox Code Playgroud)

sta*_*all 9

我尝试按照VS Code Python 文档“调试测试”部分中的说明进行操作,其中指出:

要自定义调试测试的设置,您可以在工作区文件夹中的文件"purpose": ["debug-test"]中指定。当您运行“测试:调试所有测试”、“测试:调试当前文件中的测试”和“测试:在光标处调试测试”命令时,将使用此配置。launch.json.vscode

例如,launch.json文件中的以下配置禁用justMyCode调试测试的设置:

{
  "name": "Python: Debug Tests",
  "type": "python",
  "request": "launch",
  "program": "${file}",
  "purpose": ["debug-test"],
  "console": "integratedTerminal",
  "justMyCode": false
}
Run Code Online (Sandbox Code Playgroud)

如果您有多个带有 的配置条目"purpose": ["debug-test"],则将使用第一个定义,因为我们目前不支持此请求类型的多个定义。

注意:我还看到旧的配置围绕该用途"request": "test"而不是"purpose": ["debug-test"](例如this"purpose": ["debug-test"] )浮动,因此如果不适合您,您可以尝试一下。

"debugStdLib": true如果您想进入标准库的内容() ,似乎还有一个可以使用的属性。

有一个悬而未决的问题票证,这显然不适用于 Python 扩展的 2023.8.0 版本(#21249),但它将在更高版本中修复。也可能相关:Pytest restart debugger 仅适用于代码工作空间文件 #21365


Kir*_*hxh 1

这是当前 VSCode 版本的限制:VSCode 仅使用launch.json文件来配置 pytest 调试选项,它忽略工作区启动部分。
计划很快修复: https: //github.com/microsoft/vscode-python/issues/21249
作为解决方法,我们可以在文件中复制工作区启动部分.vscode/launch.json,例如:

{
    "configurations": [
        {
            "name": "Python: Debug Tests",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "purpose": ["debug-test"],
            "console": "integratedTerminal",
            "justMyCode": false,
            "presentation": {
                "hidden": true, // keep original launch order in 'run and debug' tab
            }
        },
    ],
    "version": "0.2.0"
}
Run Code Online (Sandbox Code Playgroud)