如何在python中模拟超时?

btxsgosb  于 2023-03-16  发布在  Python
关注(0)|答案(1)|浏览(140)

好的,我试着为一个python函数写一个pytest,这个函数有一个while循环,这个循环只有在满足某个条件时才会退出,或者在x段时间内继续检查这个条件。
现在我试着为它写一个pytest,为了跳出循环,我可以明显地模拟循环所寻找的条件,但是在写pytest来测试它是否超时工作并显示正确的错误时,我无法直接思考。

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

我试过几样东西,但都没有结果。

xdnvmnnf

xdnvmnnf1#

如果我没理解错的话,你需要:
a)您的代码必须进入while循环
B)由于break语句,您的代码不能退出循环。
我将假设在设置代码中,您在调用time.time()后通过执行某些操作获得了end_time,我还将假设您不想等待超时的实际持续时间。
您可以通过以下方式处理此问题:

  • 设置time模块的模拟,以便.time()具有3个返回值:
  • 用于设置end_time的初始文件
  • 第一次进入循环时,该值将小于end_time
  • 循环的第二次迭代,其值将大于end_time
  • 传递正确的参数(或模拟用于计算condition的内容),以便if语句在第一次进入循环时计算为False

我建议您考虑一下您是否真的需要该测试-使用演示代码,您的测试不会通过使用此设置提供任何信息,除非在if块之后有其他代码,否则您无法通过使循环从一开始就不执行来获得这些信息

相关问题