You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code中调试Tox运行的单元测试并触发断点

解决VS Code中tox单元测试断点无法触发的问题

核心原因

tox默认会创建独立虚拟环境并以子进程方式运行测试,而VS Code的Python调试器默认不会自动附着到子进程,导致断点无法被捕获。

解决方法

方法一:让tox复用当前调试环境运行测试

修改launch.json配置,强制tox跳过虚拟环境创建,直接在当前调试环境中执行测试,确保调试器能附着到测试进程:

{
    "module": "tox",
    "name": "tox unit tests",
    "request": "launch",
    "type": "python",
    "console": "integratedTerminal",
    "args": [
        "-e", "py", "--", "-m", "pytest", "-xvs", "${file}"
    ],
    "env": {
        "TOX_SKIP_ENV_CREATION": "1"
    }
}
  • TOX_SKIP_ENV_CREATION=1:告诉tox复用当前Python环境,避免启动独立子进程
  • args参数:指定tox调用pytest运行当前打开的测试文件,确保调试器能追踪到测试执行流程

方法二:直接调试测试模块(绕过tox)

如果不需要tox的环境隔离,直接调试测试文件更高效,修改launch.json为:

{
    "name": "Debug Unit Tests",
    "type": "python",
    "request": "launch",
    "module": "pytest",
    "args": ["${file}", "-xvs"],
    "console": "integratedTerminal"
}

这种方式直接启动pytest调试指定测试文件,断点可正常触发。

额外检查点

  • 确保断点打在业务代码(比如controller.handle_item方法内部),而非测试用例代码(若测试用例断点也不触发,需优先排查进程附着问题)
  • 确认VS Code左下角选择的Python解释器与调试环境一致(可切换为tox对应的虚拟环境)

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:05:44