作为函数返回:return()

时间:2015-09-27 17:38:59

标签: python

是否可以使用名称return来创建函数,该函数将模拟正常的python返回。

为什么:因此在单元测试中我们可以打破具有无限循环的方法:

while True:
    ...
    time.sleep(x)

我想做这样的事......

def return(y):
    ...

self.mock_module['time'].sleep.side_effect = [return(z)]

2 个答案:

答案 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异常。

相关问题