[英]python unittest handle exception handling
我想在单元测试中对异常处理进行单元测试,并且我使用assertRaises
来检查是否引发了异常。
class Add():
def __init__(self, x, y):
if type(x) != int or type(y) != int:
raise Exception('Not a valid number')
Add(None, None)
import unittest
from test2 import Add
class TestAdd(unittest.TestCase):
def test_check_for_valid_nos(self):
self.assertRaises(Exception, Add(None,None))
if __name__ == '__main__':
unittest.main()
当我运行这段代码时,它仍然引发异常。 我希望测试通过并说已经引发了异常。
将Add
函数传递给assertRaises
,您不应直接执行Add
函数,而应随后传递位置参数。
assertRaises(Exception, Add, None, None)
这允许assertRaises
的内部实现控制执行函数并检查正确的异常。 如果直接调用该函数,例如assertRaises(Exception, Add(None, None))
,则assertRaises
必须在执行其自身的函数主体之前完全评估Add(None, None)
,因为它必须消耗该函数的结果调用作为其输入的参数。 这是对带有参数的Add
的无保护调用,它将触发异常,因此在使用assertRaises
的实际函数主体之前会引发Exception
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.