Триггерная точка останова в модульном тесте Python, вызванном из покрытия в коде Visual Studio - PullRequest
0 голосов
/ 23 апреля 2020

Я пишу юнит-тесты для моего Python 3.6 модуля, используя встроенную unittest framework . Я использую Visual Studio Code (VS Code) в качестве своей IDE. Мои тесты вызываются с помощью инструмента покрытия Python , таким образом

coverage run --include=preprocessing/load_data.py preprocessing/test_load_data.py 
coverage report --show-missing

Я получаю сообщение об ошибке одного из моих тестов, которое, как я подозреваю, связано с настройкой среды тестирования. и поэтому я хотел бы вызвать точку останова в тесте. Если бы я запускал тест непосредственно из Python, я мог бы легко настроить конфигурацию при запуске кода V C. json, но я не могу понять, как это сделать для кода, вызываемого косвенно при покрытии. Вот моя попытка:

{
    "name": "Python: Use Coverage to Run Tests",
    "type": "python",
    "request": "launch",
    "module": "coverage",
    "args": [ 
        "run", "--include=preprocessing/load_data.py",
        "preprocessing/test_load_data.py"
    ],
    "console": "integratedTerminal"
}

Это запускает программу, но точка останова не срабатывает.

Я также попытался присоединить к локальному сценарию , но добавив

ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
ptvsd.wait_for_attach()

вызывает ошибку из инструмента покрытия:

sys.settrace() should not be used when the debugger is being used.  
Call Location:  
    File "C:\Anaconda\envs\talia36\lib\site-packages\coverage\collector.py", line 278, in _installation_trace  
    sys.settrace(None)  

Как я могу настроить Python отладку в VS Code, чтобы мой модульный тест вызывался из покрытия и срабатывал точки останова

...