gpt4 book ai didi

pytest - 如何使用 PUDB 在 Tox 中调试我的 python 单元测试?

转载 作者:行者123 更新时间:2023-12-01 15:27:09 25 4
gpt4 key购买 nike

我正在尝试调试使用 tox 进行单元测试的 python 代码库。由于弄清楚,其中一个失败的测试被证明是困难的,我想使用 pudb 来单步执行代码。

一开始,人们会认为只是pip install pudb 然后在单元测试代码中添加import pudbpudb.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

所以,我被困在了这一点上。不能在 Tox 中使用 pudb 而不是 pdb 吗?

最佳答案

有一个包叫做 pytest-pudb它会覆盖自动测试环境(如 tox)中的 pudb 入口点,以成功跳入调试器。

要使用它,只需让您的 tox.ini 文件在其 testenv 依赖项中同时包含 pudbpytest-pudb 条目,类似于:

[tox]
envlist = lint, py3

[testenv]
deps =
pytest
pudb
pytest-pudb
commands = pytest tests

关于pytest - 如何使用 PUDB 在 Tox 中调试我的 python 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com