在unittest单元测试中也提供了断言的方式,经过断言判断用例有没有成功。json
unittest框架的TestCase类提供如下方法用于测试结果的判断api
方法 | 检查 |
assertEqual(a, b) | a ==b |
assertNotEqual(a, b) | a !=b |
assertTrue(x) | bool(x) is True |
assertFalse(x) | Bool(x) is False |
assertIs(a, b) | a is b |
assertIsNot(a, b) | a is not b |
assertIsNone(x) | x is None |
assertIsNotNone(x) | x is not None |
assertIn(a, b) | a in b |
assertNotIn(a, b) | a not in b |
assertIsInstance(a, b) | isinstance(a,b) |
assertNotIsInstance(a, b) | not isinstance(a,b) |
列举了上面的方法其中3个,而后观察能够看出来其中前2条用例断言是正确的,可是最后一个是断言失败的用例框架
# coding:utf-8 import unittest class Test(unittest.TestCase): def test01(self): ''' 判断 a = b ''' a = '111' b = '111' self.assertEqual(a,b) def test02(self): ''' a 存在 b 之中 ''' a = '安静' b = '测试-安静' self.assertIn(a,b) def test03(self): ''' 失败用例 ''' a = '安静' b = '测试-安静' self.assertNotIn(a,b) if __name__ == '__main__': unittest.main()
经过执行后咱们看下结果提示2个经过,1个是失败的,失败的缘由也打印出来了post
有的小伙伴们确定会说,这个报错看不懂,那么能有更清楚的报错吗?固然了。unittest这里提供了咱们本身进行设置报错信息单元测试
咱们直接在断言的后面添加想要的报错信息测试
def test03(self): ''' 失败用例 ''' a = '安静' b = '测试-安静' self.assertNotIn(a,b,msg='报错缘由,%s没有包含%s'%(a,b))
经过执行后,咱们在看下报错的信息,此次就很明错了。url
看了上面的内容你们都会了,可是不动手作一作怎么知道本身到底会不会呢?前面安静也写了关于requests的一些内容,咱们就经过request+unittest完成咱们的简单接口自动化spa
接口信息3d
接口:https://api.apiopen.top/searchMusic
参数:name:歌曲名称
按照上面的接口信息,简单的写了几个用例。可能有的小伙伴们就怕执行后报错,那咱们就经过try把错误异常捕捉。(这里没有具体的完善代码格式哈)code
这里接口返回的内容能够经过json格式转换,让咱们更加清楚的去寻找咱们想要的数据
# coding:utf-8 import unittest import requests class Music(unittest.TestCase): def test01(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"断桥残雪" } r = requests.post(url,data=data) b = r.json()['result'][0]['title'] a = '断桥残雪' self.assertEqual(a,b) print('第一个用例经过') def test02(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"说好不哭" } r = requests.post(url,data=data) a = '周杰伦' b = r.text self.assertIn(a,b) print('第二个用例经过') def test03(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"芒种" } r = requests.post(url,data=data) a = '抖音' b = r.text try: self.assertIn(a,b,msg='\n抖音不存在芒种歌曲信息中') except Exception as msg: print('错误信息%s'%msg) print('第三个用例失败') if __name__ == '__main__': unittest.main()
话很少说,咱们直接执行。能够看到前面2个已经所有经过了,可是最后一个用例失败了,失败的缘由也打印出来了。
咱们会发现上面的代码有不少重复的地方,你们能够尝试解决代码重复性的问题哈,
经过简单的例子完成了对unittest中的断言了解,具体的你们要动手去操做,俗话说熟能生巧,在那个场景下须要用到什么样的断言方便,这个都是须要本身一点点的操做后总结出来的