Pytesting Doctests в отладчике кода Visual Studio - PullRequest
0 голосов
/ 05 июля 2018

Предположим, у меня есть следующий код в foo.py:

def start():
    """
    >>> start()
    Hello world
    """
    test = 10
    print('Hello world')

Обычно я запускаю doctest, выполняя pytest foo.py --doctest-modules -v в терминале. Вместо этого я хочу иметь возможность протестировать его через встроенный отладчик кода Visual Studio для отслеживания переменных и стека вызовов.

В моем проекте launch.json есть следующая конфигурация:

"name": "PyTest",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"module": "pytest",
"args": [
    "${file}",
    "--doctest-modules",
    "-v"
],
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"debugOptions": [
    "RedirectOutput"
]

Однако, когда я открываю файл и запускаю конфигурацию отладки PyTest в отладчике VSCode, тесты документов запускаются только во встроенном терминале - на панели отладчика ничего не отображается. Как мне настроить отладчик так, чтобы он мог использовать свои переменные и стек вызовов?

1 Ответ

0 голосов
/ 17 июня 2019

VSCode 35.x (по крайней мере) имеет встроенную поддержку PyTest, и не нужно launch.json раздел:

Это мои соответствующие .vscode/settings.json

{
    "python.pythonPath": "venv/bin/python",
    "python.testing.pyTestArgs": [
        "--doctest-modules", 
        "--doctest-report", "ndiff",
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pyTestEnabled": true
}

Конечно, у меня установлена ​​ pytest в указанной виртуальной среде.

Если вам нужно настроить PyTest, вы можете установить их, как обычно, в один из

pyproject.toml, setupcfg, pytest.ini, tox.ini, setup.cfg:

[tool:pytest]
adopts          = --doctest-modules --doctest-report ndiff
doctest_optionflags= NORMALIZE_WHITESPACE ELLIPSIS
...