我最近开始使用Ludibrio来模拟单元测试中的对象。到目前为止,它似乎非常精简,但在测试某些故障情况时似乎遇到了障碍,似乎无法在线找到解决方案。
我正在使用的一些方法调用引发了我想要捕获的异常。所以我希望我的模拟对象通过在特定调用上引发异常来模拟这些条件。我尝试这样做:
from ludibrio import *
with Mock() as myMock:
def raiseException():
raise Exception('blah')
myMock.test() >> raiseException()
try:
print myMock.test()
except Exception, e:
print 'Error: %s' % e
myMock.validate()
问题是,在构建模拟对象时,而不是在调用myMock.test()时,会计算raiseException()。很明显,这不是正确的方法。
有没有办法让mock对象在运行时引发异常?或者异常是否会被截获为失败并且无论如何都不会超出模拟对象?
答案 0 :(得分:2)
进一步的谷歌搜索最终得出了答案。只需告诉模拟对象传回异常。这似乎是在外面提出的:
myMock.test() >> Exception('blah')