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

How do I debug individual Django tests in vscode?

我添加了一个启动配置,允许我 运行 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
        }

然而,当我运行这个配置时我得到一个错误, 我认为这是因为 ${file} 变成了

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

没有将文件路径转换为带点的名称,因此您需要 hard-code 在您的 launch.json.

如果您使用 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
    },

这里使用tr命令将相对路径中的/翻译成.

如果您使用 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
    },

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

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

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