我正在尝试为代码编写单元测试,其中有一个方法,只要引发异常就会调用该方法。现在,此方法由多个异常调用。我的主要目的是写下一个单元测试,我能够断言所述异常是否是该方法的触发器。
例如:(通用方法划分)
try:
divide(2,0)
except ZeroDivisionError:
method_to_be_called()
现在在我的测试用例中,我想测试method_to_be_called()的触发异常是否为ZeroDivisionError 关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
也许sys.exc_info()会有所帮助?
答案 1 :(得分:0)
似乎您(或应该)尝试检查是否会在发生其中一个异常时调用 方法。在这种情况下,您的方法是错误的:您的单元测试不应该询问发生了哪个异常。它应该引发您感兴趣的每个异常,并检查该方法是否被调用。 (所以,不要使用assertRaises
:这不会引发异常,它希望它的参数可以这样做。)
如何检查?不要试图查看方法。如果您的方法的目的是在发生异常时执行类似写入日志的操作,请引发异常,然后检查日志条目是否正确生成。
如果在测试中很难检测到方法的操作(“副作用”),则应该用“模拟”方法替换它:这是一种取代真实物体的方法,但它的工作是帮助测试框架确保它被正确调用。在您的测试框架中查找它。