繁体   English   中英

python unittest处理异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM