简介
在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断
言方法:assertEqual、assertIn、assertTrue。想了解更多可以点击 传送门 看一下最后的小结有大致介绍。
unittest断言计划是分上、中、下三篇有简单到复杂的给小伙伴们介绍一下,填补一下这部分的空白。
基本断言方法
基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。
序号 | 断言方法 | 断言描述 |
---|---|---|
1 | assertEqual(arg1, arg2, msg=None) | 验证arg1=arg2,不等则fail |
2 | assertNotEqual(arg1, arg2, msg=None) | 验证arg1 != arg2, 相等则fail |
3 | assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail |
4 | assertFalse(expr,msg=None) | 验证expr是false,如果为true,则fail |
5 | assertIs(arg1, arg2, msg=None) | 验证arg1、arg2是同一个对象,不是则fail |
6 | assertIsNot(arg1, arg2, msg=None) | 验证arg1、arg2不是同一个对象,是则fail |
7 | assertIsNone(expr, msg=None) | 验证expr是None,不是则fail |
8 | assertIsNotNone(expr, msg=None) | 验证expr不是None,是则fail |
9 | assertIn(arg1, arg2, msg=None) | 验证arg1是arg2的子串,不是则fail |
10 | assertNotIn(arg1, arg2, msg=None) | 验证arg1不是arg2的子串,是则fail |
11 | assertIsInstance(obj, cls, msg=None) | 验证obj是cls的实例,不是则fail |
12 | assertNotIsInstance(obj, cls, msg=None) | 验证obj不是cls的实例,是则fail |
如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
简单的case
1、实例,写了四个测试用例,其中第四个是失败的
2、运行结果(python3)
python2
3、在python2中执行的结果,中文编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出,python3正常。有时候也可以根据实际需要采用自定义异常输出,要灵活掌握。
参考代码
1 # coding=utf-82 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3 4 #2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-4-257 @author: 北京-宏哥8 Project:学习和使用unittest框架编写断言9 '''
10 #3.导入unittest模块
11 import unittest
12 #4.编写测试用例和断言
13
14 class Test(unittest.TestCase):
15 def test01(self):
16 '''判断 a == b '''
17 a = 1
18 b = 1
19 self.assertEqual(a, b)
20 def test02(self):
21 '''判断 a in b '''
22 a = "hello hongge"
23 b = "hello hongge and world!"
24 self.assertIn(a, b)
25
26 def test03(self):
27 '''判断 a is True '''
28 a = True
29 self.assertTrue(a)
30
31 def test04(self):
32 '''失败案例'''
33 a = "北京-宏哥"
34 b = "hongge"
35 self.assertEqual(a, b)
36
37 if __name__ == "__main__":
38 unittest.main()
自定义异常输出
1、以 assertEqual 为例分析,在pycharm中通过ctrl(command)+🖱️左键我们可以定位到方法的位置:
python3
python2
2、python2翻译:如果两个对象不能相等,就返回失败,相当于 return: first==second
python3如果你断言的 语句正确 则什么反应都没有,但是如果你出错之后 就会报出 AssertionError 并且错误可以自己填写。
3、这里除了相比较的两个参数 first 和 second,还有第三个参数 msg=None,这个 msg 参数就是遇到异常后自定义输出信息
4、参考代码
# coding=utf-8
#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行#2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-4-25
@author: 北京-宏哥
Project:学习和使用unittest框架编写断言
'''
#3.导入unittest模块
import unittest
#4.编写测试用例和断言class Test(unittest.TestCase):def test01(self):'''判断 a == b '''a = 1b = 1self.assertEqual(a, b)def test02(self):'''判断 a in b '''a = "hello hongge"b = "hello hongge and world!"self.assertIn(a, b)def test03(self):'''判断 a is True '''a = Trueself.assertTrue(a)def test04(self):'''失败案例'''a = "北京-宏哥"b = "hongge"self.assertEqual(a, b,msg='失败原因: %s!=%s'%(a,b))if __name__ == "__main__":unittest.main()
小结
unittest断言开篇就介绍这里,另外大家也不要纠结python2或者python3,建议小伙伴们使用python3,因为python2到2020年官方就好像不会维护了!!!