如何在 python 中模拟超时?对于 pytest

问题描述 投票:0回答:1

好吧,我正在尝试为具有 while 循环的 python 函数编写 pytest,该循环仅在满足特定条件时退出,或者将继续检查该条件 x 时间量。

现在我正在尝试为它编写一个 pytest 并跳出循环我能够明显地模拟循环正在寻找的条件但是在编写 pytest 以测试它是否超时有效并显示正确的错误是我无法直想。 这是演示代码

flag = False
while time.time() < end_time:
   if condition:
        do_something()
        flag = True
        break
return flag 

我已经尝试了几件事,但没有任何结果。

python unit-testing pytest
1个回答
0
投票

如果我没理解错的话,你想要的是:

a) 你的代码必须进入while循环
b) 你的代码不能因为

break
语句而退出循环。

我假设在设置代码中,您在调用

end_time
后通过执行一些操作获得了
time.time()
。我还假设您不想等待超时的实际持续时间。

您可以通过以下方式处理:

  1. 设置
    time
    模块的模拟,使
    .time()
    有 3 个返回值:
    • 第一个设置
      end_time
    • 循环第一次进入,会是一个小于
      end_time
    • 的值
    • 循环的第二次迭代,其值将大于
      end_time
  2. 传递正确的参数(或模拟用于计算
    condition
    的东西)以便它第一次进入循环时,
    if
    语句计算为
    False
    .

我建议考虑您是否真的需要该测试-使用演示代码,您的测试不会通过使用此设置为您提供任何信息,而您只是通过使循环从不首先执行而无法获得这些信息除非你在那之后有额外的代码

if

© www.soinside.com 2019 - 2024. All rights reserved.