Unittest自动化测试框架合集(全文带注释2w字教程)——从0到1学会unittest框架
“ 本文通过理论讲解+大量实例演示,全面介绍了unittest测试框架的使用方法,文章层层深入,环环相扣,建议按顺序阅读,如遇不清楚的地方可翻看上文注释部分,一般都会有详细标明,阅读过程中发现问题or错误欢迎私信博主交流改正,谢谢大家的宝贵建议!最后祝愿读者们都能成为自动化测试领域的佼佼者!”
PS:“ 文末有各个模块核心要点总结,可根据需求自由跳转!”
- 博主文章的注释都是干货!每个代码段都有详细注释!
- 重要的事情说三遍:一定要看注释!!!一定要看注释!!!一定要看注释!!!
目录
1.Fixture夹具的使用(unittest中的特殊类方法)
2.Fixture测试夹具的使用和setUp方法相关参数传递
测试用例TestCase基本框架
1.基础框架
2.基础框架实例演示
- 以测试自定义网站的登录功能为例
- 代码详解
- 框架可直接套用简单样例
- 实际应用中,自定义步骤、断言方法灵活改变即可
3.小结
- setUp()和tearDown()是每个测试用例进行时都会执行的测试方法,前者为起始,后者为结束
- 命名为test+xxx,会按照test后的阿拉伯数字顺序执行,testdemo也执行,带test都会执行
- 记得设定条件执行unittest的主函数
- 示例框架可直接套用简单样例
- 实际应用中,自定义步骤、断言方法灵活改变即可
Fixture测试夹具的使用和setUp方法相关参数传递
1.Fixture夹具的使用(unittest中的特殊类方法)
- 特殊类方法setUpClass(),tearDownClass(),在所有测试用例(整体)前后执行
- 作用,改变执行流程:
- setUpClass()---setUp()-test1()-tearDown()---setUp()-test1()-tearDown()---tearDownClass()
- 一定要认真看注释!!!
2. Python关键知识(一)——为3.作铺垫
- 定义类属性,普通方法访问类属性需要通过类名访问,例如test1()中想要获取guide需要通过语句BasicTestCase.guide直接访问类属性
- 语法块中高亮是因为这是在方法中定义的类属性,代码未运行前无法识别,运行时无影响
- 注意与3.做比较
- 一定要认真看注释!!!
3. Python关键知识(二)——为4.作铺垫
-
Python中的特性:如果实例没有相应属性,类属性有,则Python自动访问类属性替代
-
注意与4.作比较
-
一定要认真看注释!!!
4.setUp定义全局实例属性——为5.作铺垫
-
在Unittest套件中,全局实例属性可以在setUp,tearDown中设置
- 注意和当局实例属性区分,与5.作比较
- 一定要认真看注释!!!
5.当局实例属性与方法间参数依赖
- 普通方法(test1)只可定义"当局"实例属性,生命周期为本方法内,无法制造依赖关系
- 即普通方法test2无法使用test1中定义的实例属性
- 制造方法间依赖关系的手段:使用类属性在每一个方法里传参即可
- 一定要认真看注释!!!
6.小结
- 夹具(特殊类方法)setUpClass(),tearDownClass(),在所有测试用例(整体)前后执行
- 在Unittest套件中,全局实例属性可以在setUp,tearDown中设置
- 普通方法(test1)只可定义"当局"实例属性,生命周期为本方法内,无法制造依赖关系
- 制造方法间参数依赖关系的手段:使用类属性在每一个方法里传参即可
跳过测试用例skip操作
1.跳过的类型
-
直接跳过、条件跳过
- 一定要认真看注释!!!
2.条件跳过参数的导入
- 必须在类下直接定义
-
因为@unittest.skipIf()语句执行优先级大于所有def,即无论是setUp()、setUpClass()还是test2()都在其之后执行,所以定义必须在类下
- 一定要认真看注释!!!
3.测试用例之间参数联动判定跳过的方法
-
使用测试用例之间(例如:test1()、test2())相关参数联动设定跳过的方法
-
语句编码+类属性变量---类属性变量通常用列表、字典等,解决多条件依赖时方便
- 一定要认真看注释!!!
4.小结
-
跳过的类型:直接跳过、条件跳过
-
条件跳过参数的导入,必须在类下直接定义
-
测试用例之间参数联动判定跳过的方法:语句编码+类属性变量
数据驱动测试DDT
1.数据驱动测试的基本概念、引读
引读
- 当我们进行测试时遇到执行步骤相同,只需要改变入口参数的测试时,使用DDT可以简化代码
- 一定要认真看注释!!!
- 相信到这里读者对数据驱动已经有了一定了解
- 接下来我们开始进入DDT的学习
单一参数的数据驱动测试
- 步骤:导包——设置@ddt装饰器——写入参数——形参传递——调用
- 一定要认真看注释!!!
多参数的数据驱动测试(一个测试参数中含多个元素)
- 步骤:导包——设置@ddt装饰器——设置@unpack解包——写入参数——形参传递——调用
- 一定要认真看注释!!!
- 看到这里,笔者以及介绍完了数据驱动测试的基本概念,以及单参数、多参数数据驱动的区别,但是,我们是将数据和代码写在一起,接下来笔者会介绍数据驱动测试的核心理念——数据与代码分离!!!(数据和代码在不同的文件里,方便维护代码和快速修改数据)
- 数据驱动测试的核心——数据与代码分离
- 接下来介绍txt格式、json格式、yaml格式数据的单参数、多参数数据驱动方法
2.txt格式文件驱动
单一参数数据驱动
- 核心:编写阅读数据文件的函数、@data入口参数加*读取
- 一定要认真看注释!!!
多参数数据驱动
- 核心:读取函数中的数据分割、@unpack解包
- 一定要认真看注释!!!
3.json格式文件驱动
单一参数数据驱动
- 核心:使用json解析包读取文件
- 一定要认真看注释!!!
多参数数据驱动(以列表形式存储多参数)
- 核心:@unpack装饰器的添加
- 一定要认真看注释!!!
多参数数据驱动(以对象形式存储多参数)
- 核心:形参名字与json中对象key名相同
- 一定要认真看注释!!!
4.yaml格式文件驱动
-
在自动化测试领域中,yaml数据格式是举足轻重的,因此笔者在此特地进行yaml格式解析
-
在unittest测试框架中,对yaml数据格式的支持十分强大,使用非常方便
-
yaml文件的数据驱动执行代码十分简单!!!(但是要注意细节)
-
学习更多yaml数据格式的知识,读者可通过链接快速学习
单一参数数据驱动
- 核心:使用yaml解析包读取文件,导入file_fata驱动数据
- 一定要认真看注释!!!
多参数数据驱动
- 核心:形参入口和数据参数key命名统一(下文介绍参数无法统一的解决办法)
- 一定要认真看注释!!!
- 特殊情况:当入口与文件中数据参数无法统一命名时,解决办法
-
Python中传递可变参数:*代表顺序阅读列表类型,**代表顺序阅读对象(字典)类型,点击阅读可变参数部分可了解相关机制
5.小结
-
数据驱动:测试时遇到执行步骤相同,只需要改变入口参数的测试时,使用DDT可以简化代码
-
单参数:步骤:导包——设置@ddt装饰器——写入参数——形参传递——调用
-
多参数:步骤:导包——设置@ddt装饰器——设置@unpack解包——写入参数——形参传递——调用
-
-
txt文件数据驱动
-
单参数核心:编写阅读数据文件的函数、@data入口参数加*读取
-
多参数核心:读取函数中的数据分割、@unpack解包
-
-
json文件数据驱动
-
单参数核心:json解析包读取文件
-
多参数列表核心:json解析包读取文件,@unpack装饰器的添加
-
多参数对象核心:json解析包读取文件,@unpack装饰器的添加形参名字与json中对象key名相同
-
-
yaml文件数据驱动
-
单参数核心:使用yaml解析包读取文件,导入file_fata驱动数据
-
多参数核心:形参入口和数据参数key命名统一
-
测试套件TestSuite
1.引言
-
测试套件:执行已编写的测试用例,特点:可用于执行不同类测试用例之间指定测试用例组合测试,也可指定某类、某些类测试用例单独测试
-
例如:
-
登陆类测试用例:1.登录成功 2.登录失败
-
账户类测试用例:1.用户A 2.用户B
-
测试套件的功能:可单独执行登录类测试用例、执行用户A+登录成功的用例
- 一定要认真看注释!!!
2.测试套件TestSuite基本框架
- 核心:导入测试用例模块(自己编写的),类的实例化
- 一定要认真看注释!!!
3.应用
- 一次添加多个测试用例,列表存储
- 一定要认真看注释!!!
- 以变量形式指定测试内容(推荐方法)
- 一次添加多个测试用例,并增加程序可读性
- 一定要认真看注释!!!
4.装载器的使用
-
装载器类型
-
loadTestsFromTestCase('测试用例的类名')
-
loadTestsFromModule('测试用例文件名/模块名')
-
loadTestsFromName('测试用例文件名/测试用例类名通用')
-
使用类装载器,示例:
- 一定要认真看注释!!!
-
使用模块装载器,示例:
- 一定要认真看注释!!!
-
使用name装载器(推荐方法:类名/文件名通用),示例:
- 一定要认真看注释!!!
- 模块过滤装载器,大型测试用例使用
- unittext.defaultTestLoader.discover()
5.小结
- 测试套件:可用于执行不同类测试用例之间指定测试用例组合
- 测试指定用例组合:以变量形式指定测试内容(推荐方法,程序可读性高)
- 测试指定类/指定模块用例组合:使用name装载器(推荐方法,类名/文件名通用)
- 测试多模块大型测试用例合集,使用模块过滤装载器,设置筛选条件
HTML测试报告生成
- HTML报告生成第三方包下载
- CN结尾的生成中文报告,EN结尾的生成英文报告,下载到项目所在目录
- 实例语法实例:
- 仅改变测试执行器runner
- 当前目录自动生成report_file.html,打开查看内容:
总结
1.测试用例TestCase基本框架
- setUp()和tearDown()是每个测试用例进行时都会执行的测试方法,前者为起始,后者为结束
- 命名为test+xxx,会按照test后的阿拉伯数字顺序执行,testdemo也执行,带test都会执行
- 记得设定条件执行unittest的主函数
- 示例框架可直接套用简单样例
- 实际应用中,自定义步骤、断言方法灵活改变即可
2.Fixture测试夹具的使用和setUp方法相关参数传递
- 夹具(特殊类方法)setUpClass(),tearDownClass(),在所有测试用例(整体)前后执行
- 在Unittest套件中,全局实例属性可以在setUp,tearDown中设置
- 普通方法(test1)只可定义"当局"实例属性,生命周期为本方法内,无法制造依赖关系
- 制造方法间参数依赖关系的手段:使用类属性在每一个方法里传参即可
3.跳过测试用例skip操作
跳过的类型:直接跳过、条件跳过
条件跳过参数的导入,必须在类下直接定义
测试用例之间参数联动判定跳过的方法:语句编码+类属性变量
4.数据驱动测试DDT
数据驱动:测试时遇到执行步骤相同,只需要改变入口参数的测试时,使用DDT可以简化代码
单参数:步骤:导包——设置@ddt装饰器——写入参数——形参传递——调用
多参数:步骤:导包——设置@ddt装饰器——设置@unpack解包——写入参数——形参传递——调用
txt文件数据驱动
单参数核心:编写阅读数据文件的函数、@data入口参数加*读取
多参数核心:读取函数中的数据分割、@unpack解包
json文件数据驱动
单参数核心:json解析包读取文件
多参数列表核心:json解析包读取文件,@unpack装饰器的添加
多参数对象核心:json解析包读取文件,@unpack装饰器的添加形参名字与json中对象key名相同
yaml文件数据驱动
单参数核心:使用yaml解析包读取文件,导入file_fata驱动数据
多参数核心:形参入口和数据参数key命名统一
5.测试套件TestSuite与HTML报告生成
- 测试套件:可用于执行不同类测试用例之间指定测试用例组合
- 测试指定用例组合:以变量形式指定测试内容(推荐方法,程序可读性高)
- 测试指定类/指定模块用例组合:使用name装载器(推荐方法,类名/文件名通用)
- 测试多模块大型测试用例合集,使用模块过滤装载器,设置筛选条件
- HTML报告生成,改变Runner工具
💗 “三生——分享欲可以是爱意的表达,分享欲可以是高级的浪漫,分享与也可以是深入骨髓的温柔”
——Created By 是羽十八ya
- 点赞
- 收藏
- 关注作者
评论(0)