运行 假设时如何退出 pdb 调试?
How do I exit from pdb debugging when running hypothesis?
我喜欢使用 hypothesis 进行单元测试。我也喜欢在出现问题时使用 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()
我正在使用 python 3.8 假设 5.37.0
这发生在 Linux 但 不是 在 Windows 下,目前还不清楚这是否是 Hypothesis 或 Pdb 中的错误,或者 'just' 功能组合的不良行为。
作为,您可以import os; os._exit(0)
跳过所有清理逻辑并立即退出。
一个更好的解决方案,尽管涉及更多,但在使用调试器时禁用多错误报告和收缩阶段,以便假设在第一次失败后立即停止生成示例。您可以创建一个用于调试器的 settings profile,然后通过 pytest
的 --hypothesis-profile=
参数激活它。
我喜欢使用 hypothesis 进行单元测试。我也喜欢在出现问题时使用 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()
我正在使用 python 3.8 假设 5.37.0
这发生在 Linux 但 不是 在 Windows 下,目前还不清楚这是否是 Hypothesis 或 Pdb 中的错误,或者 'just' 功能组合的不良行为。
作为import os; os._exit(0)
跳过所有清理逻辑并立即退出。
一个更好的解决方案,尽管涉及更多,但在使用调试器时禁用多错误报告和收缩阶段,以便假设在第一次失败后立即停止生成示例。您可以创建一个用于调试器的 settings profile,然后通过 pytest
的 --hypothesis-profile=
参数激活它。