如何在 vscode 中调试单个 Django 测试?

Alb*_*man 3 python django visual-studio-code vscode-debugger

我添加了一个启动配置,允许我在 Django 中运行所有测试,另一个允许我运行服务器,这两个都可以正常工作。

我正在寻找一种调试单个文件的方法,但是${file}在参数中使用给出了 django 不喜欢的正常路径。

我想要一种更改${file}为 python 路径的方法,以便我可以在单个文件上调试我的测试。

python manage.py test --noinput --keepdb python.path.to.my.file

在命令行中工作。

下面的配置好像差不多:

      {   "name": "Test File",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "test",
                "--noinput",
                "--keepdb",
                "${file}"
            ],
            "django": true
        }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此配置时出现错误,我认为这是因为 ${file}变成

path/to/my/file而不是path.to.my.file.

小智 6

如果您使用的是 Windows 和 git bash,则带有 tr 的启动配置也可以工作,但您需要引用变量替换并引用双反斜杠。

    {
        "name": "Python: Django Debug Single Test",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "args": [
            "test",
            "`echo -n \"${relativeFileDirname}\" | tr \\\\ .`.${fileBasenameNoExtension}"
        ],
        "django": true
    },
Run Code Online (Sandbox Code Playgroud)


Bre*_*non 5

没有将文件路径转换为点名称,因此您需要将其硬编码到您的launch.json.


小智 5

如果您使用的是 Mac 或 Linux,以下启动配置应该适用于由 Django 执行的单个单元测试:

    {
        "name": "Python: Django Debug Single Test",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "args": [
            "test",
            "`echo -n ${relativeFileDirname} | tr \/ .`.${fileBasenameNoExtension}"
        ],
        "django": true
    },
Run Code Online (Sandbox Code Playgroud)

这使用tr命令转换/.相对路径。

  • 似乎较新版本的 vscode 不再支持上述命令。我曾经能够运行该命令并调试单个文件,但现在它不会用“.”替换“/”。 (2认同)

neg*_*tek 5

这对我在 wsl ubuntu 下的 Windows 中有用,并以你的tests.py作为打开文件:

{
    "name": "Test Django",
    "type": "python",
    "request": "launch",
    "python": "${workspaceFolder}/../.venv/bin/python",
    "program": "${workspaceFolder}/manage.py",
    "args": [
        "test",
        "${relativeFileDirname}"
    ],
    "django": true
},
Run Code Online (Sandbox Code Playgroud)

我认为你不需要任何回声| tr ... fileBasenameNoExtension 等