繁体   English   中英

运行假设时如何退出 pdb 调试?

[英]How do I exit from pdb debugging when running hypothesis?

我喜欢在单元测试中使用假设 当 go 出错时,我也喜欢使用pdb进行调试。 但是尝试将这两者结合使用可能会非常烦人。 如果我在使用pytest <PATH-TO-FILE> -s的假设运行的文件中设置断点,它将按预期在断点处停止,我可以进行分析。 但是完成后,我希望能够退出测试。 但是,如果我从断点内部执行ctrl+c ,则测试不会退出,它只是转到下一个假设测试用例。 我必须继续这样做,直到假设完成并生成所有测试用例。

每次我希望能够退出测试时,我通常最终都会打开系统监视器并杀死 pytest 进程。

我希望有更好的方法。

该问题可以通过以下代码段重现 -

import hypothesis
from hypothesis import strategies as st

@hypothesis.given(st.integers())
def test_some_function(some_arg):
    breakpoint()
    print(some_arg)

test_some_function()

我正在使用带有假设 5.37.0 的 python 3.8

这发生在 Linux 下,但不在Windows 下,目前尚不清楚这是假设中的错误,还是 Pdb 中的错误,或者是“只是”来自功能组合的不良行为。

作为一种解决方法,您可以import os; os._exit(0) import os; os._exit(0)跳过所有清理逻辑并立即退出。

一个更好的(尽管涉及更多)解决方案是在使用调试器时禁用多错误报告和缩小阶段,以便假设在第一次失败后立即停止生成示例。 您可以创建一个用于调试器的设置配置文件,然后通过 pytest 的pytest --hypothesis-profile=参数激活它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM