多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] 前言 在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。 用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue. <br /> ## 一、简单案例 1. 下面写了4个case,其中第四个是执行失败的 ``` import unittest class Test(unittest.TestCase): def test01(self): '''判断 a == b''' a = 1 b = 1 self.assertEqual(a, b) def test02(self): '''判断a in b''' a = "hello" b = "hello world!" self.assertIn(a, b) def test03(self): '''判断 a is Ture''' a = True self.assertTrue(a) def test04(self): a = "上海-悠悠" b = "yoyo" self.assertEqual(a, b, msg="失败原因:%s != %s" %(a, b)) if __name__ == "__main__": unittest.main() ``` 2. 执行结果如下 ``` Failure Expected :'\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0' Actual :'yoyo' <Click to see difference> Traceback (most recent call last): File "D:\test\yoyotest\kecheng\test12.py", line 27, in test04 self.assertEqual(a, b) AssertionError: '\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0' != 'yoyo' ``` 3. 执行的结果,中文编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出 <br /> ## 二、自定义异常 1. 以assertEqual为例分析: ``` assertEqual(self, first, second, msg=None)     Fail if the two objects are unequal as determined by the '=='     operator. ``` 2. 翻译:如果两个对象不能相等,就返回失败,相当于return: first==second 3. 这里除了相比较的两个参数first和second,还有第三个参数msg=None,这个msg参数就是遇到异常后自定义输出信息 ![Snipaste_2020-09-11_17-58-59.png](http://i.loli.net/2020/09/11/SQP1h5ewCLmJEXI.png) <br /> ## 三、unittest常用的断言方法 ``` 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotEqual(self, first, second, msg=None) --判断两个参数不相等:first != second 3.assertIn(self, member, container, msg=None) --判断是字符串是否包含:member in container 4.assertNotIn(self, member, container, msg=None) --判断是字符串是否不包含:member not in container 5.assertTrue(self, expr, msg=None) --判断是否为真:expr is True 6.assertFalse(self, expr, msg=None) --判断是否为假:expr is False 7.assertIsNone(self, obj, msg=None) --判断是否为None:obj is None 8.assertIsNotNone(self, obj, msg=None) --判断是否不为None:obj is not None ```