Отладка pytest unitest в vscode приводит к тому, что AttributError sys не имеет атрибута __breakpointhook__ при выходе - PullRequest
0 голосов
/ 19 сентября 2018

Я использую Visual Studio Code 1.27.2 в Ubuntu 18.04 и Anaconda версии 4.5.10 для управления своими виртуальными средами.

У меня установлены расширения Anaconda и python в vscode.

Я провел простой тест с использованием виртуальной среды, в которой я установил только pytest и pylint для python 3.6.

Если я запускаю этот простой скрипт:

import pytest

def test_test():
    assert True == True

Код Visual Studio прекрасно запускает тесты и отображает результаты в консоли вывода.

Если я пытаюсь отладитьэтот сценарий, однако, тест запускается и при выходе я получаю AttributeError sys не имеет атрибута __breakpointhook__, и я не понимаю, почему?Я делаю что-то неправильно?Это ошибка в отладчике кода Visual Studio или интеграция с pytest?

Трассировка стека:

File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/__main__.py", line 211, in <module> singlesession=args.single_session)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/__main__.py", line 205, in main debug_main(addr, name, kind, *extra, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 28, in debug_main run_module(address, name, *extra, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 53, in run_module run(argv, addr, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 125, in _run _pydevd.main()
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1743, in main debugger.connect(host, port)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1099, in run return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1123, in _exec runpy._run_module_as_main(module_name, alter_argv=False)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pytest.py", line 77, in <module> raise SystemExit(pytest.main())
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/config/__init__.py", line 67, in main return config.hook.pytest_cmdline_main(config=config)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/hooks.py", line 258, in __call__ return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/manager.py", line 67, in _hookexec return self._inner_hookexec(hook, methods, kwargs)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/manager.py", line 61, in <lambda> firstresult=hook.spec_opts.get('firstresult'),
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 201, in _multicall return outcome.get_result()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 76, in get_result raise ex[1].with_traceback(ex[2])
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 180, in _multicall res = hook_impl.function(*args)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/main.py", line 208, in pytest_cmdline_main return wrap_session(config, _main)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/main.py", line 203, in wrap_session config._ensure_unconfigure()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/config/__init__.py", line 611, in _ensure_unconfigure fin()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/debugging.py", line 67, in fin sys.breakpointhook = sys.__breakpointhook__
AttributeError: module 'sys' has no attribute '__breakpointhook__'

Параметры рабочего пространства:

{
    "python.unitTest.pyTestEnabled": true,
    "python.unitTest.unittestEnabled": false,
    "python.unitTest.nosetestsEnabled": false,
    "python.unitTest.autoTestDiscoverOnSaveEnabled": true,
    "python.pythonPath": "/home/gabriel/anaconda3/envs/pytestenv/bin/python"
}

Я попытался запустить его из отладкисеанс, использующий эту конфигурацию в файле launch.json, но он дает мне ту же трассировку стека и ошибку.

{
     "name": "Debug Pytest",
     "type": "python",
     "request": "launch",
     "stopOnEntry": false,
     "pythonPath": "${config:python.pythonPath}",
     "module": "pytest",
     "envFile": "${workspaceFolder}/.env",
     "console": "integratedTerminal",
}

Я немного растерялся и не знаю, где искать дальше.Конечно, я все еще могу отлаживать свой код, поскольку только при выходе возникает исключение, но я нахожу это тревожным, и я не знаю, является ли это проблемой с кодом Visual Studio или с моими конфигурациями.

Anyпомощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 20 сентября 2018

Это ошибка в ptvsd , которая будет исправлена ​​в следующем выпуске, который будет включен в следующий выпуск расширения Python для кода VS.

...