要测试函数,当第一个参数不是整数类型时引发异常:
def magicWithInteger(integerA):
if not isinstance(integerA, int):
raise TypeError("argument should be integer type")
我使用unittest assertraises和assertequal,这样我就可以检查参数错误的函数是否会引发typeerror,以及typeerror是否实际抛出“参数应该是整数类型”
class test(unittest.TestCase):
def test_magicWithInteger(self):
self.assertRaises(TypeError, MagicWithInteger, "TEST")
try:
MagicWithInteger("TEST")
except TypeError as error:
self.assertEqual(str(error), "argument should be integer type")
两次调用函数看起来有点傻,第一次是检查它是否引发异常,第二次是检查哪个typeerror异常?
经过一番研究,我知道用context manager一次性完成这两个测试是可能的,但我似乎入不敷出。。。
1条答案
按热度按时间axr492tv1#
你可以使用
with self.assertRaises(ExceptionType)
上下文管理器来捕获异常。根据assertraises手册,您可以在with
block:如果您用as <name>
语法:来源:docs.python.org
所以你的代码会变成:
ps:我不知道,但是
with
语句不会在python中引入新的作用域。内部定义的变量with
与with
声明本身。看到了吗https://stackoverflow.com/a/45100308/3216427 到这个特定的点,对于实际创建作用域的东西,https://stackoverflow.com/a/52992404/3216427.