(四十一)Unittest单元测试框架之关于unittest还需要知道的-执行用例的顺序
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。
#------------------------------------------------我是可耻的分割线-------------------------------------------
关于unittest单元测试框架,还有一些问题值得进一步探讨。也许你已经在看认识unittest过程中产生了一些疑问,也许你会在接下来的文章中找到答案。
执行用例的顺序
用例的执行顺序涉及多个层级:在多个测试目录的情况下,先执行那个目录?在多个测试文件的情况下,先执行那个文件?在多个测试类的情况下,先执行那个测试类?在多个测试方法(用例)的情况下,先执行那个测试方法?
import unittest class TestBdd(unittest.TestCase): def setUp(self): print('test TestBdd :') def test_ccc(self): print('test ddd') def test_aaa(self): print('test ccc') def tearDown(self): pass class TestAdd(unittest.TestCase): def setUp(self): print('test TestAdd :') def test_ccc(self): print('test bbb') def test_aaa(self): print('test aaa') def tearDown(self): pass #执行测试类的测试方法 if __name__ == '__main__': unittest.main()
运行结果:
无论执行多少次,顺序都是一样的,通过上面的结果,相信你已经找到了unittest执行测试用例的规律。
unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z。所以,TestAdd类会优先于TestBdd类被执行,test_aaa()方法会优先于test_ccc()被执行,因而它并没有按照用例从上到下的顺序执行。
对于测试目录于测试文件来说,unittest框架同样时按照这个规则来加载测试用例的。 那么可不可以让test_ccc()先执行?答案是肯定的,只是不能使用默认的main()方法了,而是要通过TestSuite类的addTest()方法按照一定的顺序来加载。
import unittest class TestBdd(unittest.TestCase): def setUp(self): print('test TestBdd :') def test_ddd(self): print('test ddd') def test_ccc(self): print('test ccc') def tearDown(self): pass class TestAdd(unittest.TestCase): def setUp(self): print('test TestAdd :') def test_bbb(self): print('test bbb') def test_aaa(self): print('test aaa') def tearDown(self): pass #执行测试类的测试方法 if __name__ == '__main__': #构造测试集 suite = unittest.TestSuite() suite.addTest(TestBdd("test_ddd")) suite.addTest(TestBdd("test_ccc")) suite.addTest(TestAdd("test_bbb")) suite.addTest(TestAdd("test_aaa")) runner = unittest.TextTestRunner() runner.run(suite)
运行结果:
现在的执行顺序就是addTest()方法所加载的顺序。discover()的加载测试用例的规则于main()方法相同。所以,我们只能通过测试用例的命名提高被执行的优先级。例如,将希望先被执行的测试用例命名为“test_a”,希望最后执行的测试用例命名为“test_z”
执行多级目录的用例
我们要控制Web用例的数量,但是当测试用例达到一定量级时,就要考虑划分目录比如规划如下测试目录
原文地址:https://www.cnblogs.com/lirongyang/p/11505093.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于Ant Design Vue封装一个表单控件
- Rust闭包的虫洞穿梭
- TS 设计模式08 - 发布订阅模式
- GrowingIO 数据采集 iOS SDK 测试实践
- Kubernetes 1.19.0——Pod(2)
- 极速40分钟写出SQLite数据展示与导出功能【技术创作101训练营】
- opencv cudacodec VideoReader 报错
- Flutter中富文件标签的解决方案
- JDK 15已发布,你所要知道的都在这里!
- [Concent速成] (1) 定义和共享模块状态
- 利用JS代码批量自动取消抖音关注
- 开机报错/dev/vda1 contains a file system with errors,check forced.
- centos内核的删除或修改
- chkconfig学习笔记
- 3分钟短文:说说Laravel通用缓存Cache的使用技巧