Как отлаживать отдельные тесты Django в 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.


person Albert Rothman    schedule 02.07.2019    source источник


Ответы (3)


Путь к файлу не преобразуется в точечное имя, поэтому вам нужно будет жестко запрограммировать его в файле launch.json.

person Brett Cannon    schedule 02.07.2019
comment
Не стесняйтесь открывать запрос функции на github.com/microsoft/vscode-python, но как автор самого импорта в Python, я могу сказать вам, что на самом деле сложно сделать точный перевод для всех во всех ситуациях (хотя мы могли бы рассмотреть решение, достаточное для 80%). - person Brett Cannon; 03.07.2019

Если вы работаете на 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 для преобразования / в . в относительном пути.

person Niels    schedule 14.05.2020

Если вы используете 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
    },
person Arenwino    schedule 08.06.2020