测试用例是否测试通过是通过将预期结果与实际结果做比较来判定的,那代码中怎么来判定用例是否通过呢?在python中这种判定的方法就叫做断言,断言可以使用python的assert方法,也可以使用unittest框架提供的一系列断言方法。
unittest常用断言方法如下
方法 | 说明 |
assertEqual(arg1, arg2, msg=None) | 验证arg1=arg2,不等则fail |
assertNotEqual(arg1, arg2, msg=None) | 验证arg1 != arg2, 相等则fail |
assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail |
assertFalse(expr,msg=None) | 验证expr是false,如果为true,则fail |
assertIsNone(expr, msg=None) | 验证expr是None,不是则fail |
assertIsNotNone(expr, msg=None) | 验证expr不是None,是则fail |
assertIn(arg1, arg2, msg=None) | 验证arg1是arg2的子串,不是则fail |
assertNotIn(arg1, arg2, msg=None) | 验证arg1不是arg2的子串,是则fail |
assertIs(arg1, arg2, msg=None) | 验证arg1、arg2是同一个对象,不是则fail |
assertIsNot(arg1, arg2, msg=None) | 验证arg1、arg2不是同一个对象,是则fail |
assertGreater(arg1, arg2, msg=None) | 验证arg1大于arg2,不是则fail |
assertGreaterEqual(arg1, arg2, msg=None) | 验证arg1大于等于arg2,不是则fail |
assertLess(arg1, arg2, msg=None) | 验证arg1小于arg2,不是则fail |
assertLessEqual(arg1, arg2, msg=None) | 验证arg1小于等于arg2,不是则fail |
assertRaises(expected_exception) | 使用with语句,断言执行的代码快会抛指定异常 |
代码如下
import unittest class Demo(unittest.TestCase): def raise_value_error(self): raise ValueError def test_assert(self): a, b = 1, 2 c = None d = True e = False f = [1, 3, 4] g = h = 5 # >>比较断言 # 断言相等 assert a + b == 3 self.assertEqual(a+b, 3) # 断言不等 assert a + b != 4 self.assertNotEqual(a+b, 4) # >>空值断言 # 断言非空 assert a is not None self.assertIsNotNone(a) # 断言为空 assert c is None self.assertIsNone(c) # >>布尔值断言 # 断言为True assert d is True self.assertTrue(d) # 断言为False assert e is False self.assertFalse(e) # >>包含断言 # 断言包含在内 assert a in f self.assertIn(a, f) # 断言不包含在内 assert b not in f self.assertNotIn(b, f) # >>对象断言 # 断言是同一个对象 assert g is h self.assertIs(g, h) # 断言不是同一个对象 assert a is not h self.assertIsNot(a, h) # >>断言预期异常 with self.assertRaises(ValueError): self.raise_value_error() if __name__ == '__main__': unittest.main()