是否可以使用名称return来创建函数,该函数将模拟正常的python返回。
为什么:因此在单元测试中我们可以打破具有无限循环的方法:
while True:
...
time.sleep(x)
我想做这样的事......
def return(y):
...
self.mock_module['time'].sleep.side_effect = [return(z)]
答案 0 :(得分:3)
没有。这是不可能的。但是,您可以这样做:
condition = []
while not condition:
...
self.mock_module['time'].sleep.side_effect = [lambda:condition.append(1)]
答案 1 :(得分:1)
你不能作为一个函数返回 - 因为该函数只是从它自己返回。我认为您正在寻找的解决方案是一个例外:
class StopTest(Exception):
pass
def stopTest():
raise StopTest()
...
self.mock_module['time'].sleep.side_effect = [stopTest]
然后使用assertRaises
来预测单元测试中的StopTest
异常。