【发布时间】:2021-03-19 04:45:07
【问题描述】:
我喜欢在我的单元测试中使用hypothesis。我也喜欢在出现问题时使用pdb 进行调试。但是尝试将这两者结合使用可能会非常烦人。如果我在使用pytest <PATH-TO-FILE> -s 的假设运行的文件中设置断点,它将按预期停止在断点处,我可以进行分析。但是完成后,我希望能够退出测试。但是,如果我从断点内部执行ctrl+c,则测试不会退出,它只是转到下一个假设测试用例。而且我必须继续这样做,直到假设完成并生成所有测试用例。
每次我希望能够退出测试时,我通常都会打开系统监视器并终止 pytest 进程。
我希望有更好的方法。
问题可以通过下面的sn-p重现-
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
【问题讨论】:
-
你想输入测试用例一次然后跳过还是什么?
-
@AzatIbrakov 是的,基本上。
-
你能分享一个精确的复制脚本吗?当我尝试使用内置的
breakpoint()进行复制时,我得到了n逐步执行的预期行为,c继续下一次迭代,并且 ctrl-c 完全退出调试器和 pytest 会话。 -
这太令人惊讶了。我假设这是标准行为。您能否确认我更新问题的代码是否存在问题? @ZacHatfield-Dodds
-
啊,但是!我可以在 Ubuntu 下重现您的问题,而不是在 Windows 下。这很奇怪。
标签: python unit-testing debugging pytest python-hypothesis