Я пытаюсь отладить кодовую базу python, которая использует tox для модульных тестов.Один из провальных тестов оказывается трудным из-за выяснения, и я хотел бы использовать pudb для пошагового выполнения кода.
Сначала подумалось, что нужно просто pip install pudb
, а затем в коде модульного теста добавить import pudb
и pudb.settrace()
.Но это приводит к ModuleNotFoundError:
> import pudb
>E ModuleNotFoundError: No module named 'pudb'
>tests/mytest.py:130: ModuleNotFoundError
> ERROR: InvocationError for command '/Users/me/myproject/.tox/py3/bin/pytest tests' (exited with code 1)
Заметив, что папка проекта .tox приводит к пониманию, что в tox есть папка site-packages, что имеет смысл, так как суть tox состоит в том, чтобы управлять тестированием под другим virtualenv.сценарии.Это также означает, что есть файл конфигурации tox.ini с разделом deps, который может выглядеть следующим образом:
[tox]
envlist = lint, py3
[testenv]
deps =
pytest
commands = pytest tests
добавление pudb
в список deps должно разрешить ModuleNotFoundError, но приводит к другой ошибке:
self = <_pytest.capture.DontReadFromInput object at 0x103bd2b00>
def fileno(self):
> raise UnsupportedOperation("redirected stdin is pseudofile, "
"has no fileno()")
E io.UnsupportedOperation: redirected stdin is pseudofile, has no fileno()
.tox/py3/lib/python3.6/site-packages/_pytest/capture.py:583: UnsupportedOperation
Итак, я застрял в этой точке.Разве нельзя использовать pudb вместо pdb в Tox?