很久没有写关于测试的随笔了,最近有空学习、整理一下关于unittest框架的知识。

unittest单元测试框架,不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行。

unittest常见的几个属性

unittest重要并且常用的属性:TestCase、TestSuite、TextTestRunner、TestFixture、TestLoader、main

unittest.TestCase:TestCase类,所有测试用例的继承的基本类。一个测试用例就是一个完整的测试流程,包括测试用例执行前的环境准备日(setUp),实现测试过程的代码(run),以及用例之后后的环境还原(tearDown)。一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。

图中可以看到我使用的是setUpClass和tearDownClass方法,而不是setUp和tearDown。他们的区别setUp和tearDown是在每一个用例执行前后都会执行一次,setUpClass和tearDownClass方法只在本类所有用例执行之前执行一次和所有用例执行完成之后执行一次,并且如图必须加上@classmethod进行修饰

unittest.main():用他可以方便的讲一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该类中以test命名开头的测试方法,并执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为0-9,A-Z,a-z。所以以A开头的用例会比以a开头的用例优先执行。

如上图一般在用例最后会加上这段代码, 运行unittest.main()的时候,就会使用TestLoader类去搜索本类里面所有已test开头的用例来执行。

unittest.TestSuite():创建测试套件,就是多个测试用例集合在一起,而且TestSuite也可以嵌套TestSuite。testSuite()可以被看做是一个容器,通过addTest可以向测试套件里面增加用例

说明:

addTest(): addTest()方法是将测试用例添加到测试套件中,如下方,是将test_baidu模块下的BaiduTest类下的test_baidu测试用例添加到测试套件。

suite = unittest.TestSuite()
suite.addTest(test_baidu.BaiduTest('test_baidu'))

unittest.defaultTestLoader():defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover。用法如下:

注意:上图我用的方式是HTMLTestRunner类是因为我需要执行完用例之后自动生成测试报告。

unittest.TextTextRunner():run()方法来执行suite(TestSuite/TestCase)所组装的用例套件,入参为suite测试套件,测试结果会保存到TextTestResult实例中。

unittest.TestLoader:加载TestCase到TestSuite中的,其中loadTestsFrom__()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例。

unittest.Fixture:一个测试用例的初始化准备及环境还原,主要是setUp() 和 setDown()方法;

总结:

1.TextTestRunner.run(TestSuite)方法执行的是TestSuite套件

2.DefultTestLoader.discover()是生成套件所以用run()方法执行

3.TestLoder也是将TestCase加载到TestSuite测试套件里面

3.main()方法是调用了TestLoader方法,那么也将生成测试套件,也是用run()方法执行用例

最新文章

  1. 固态硬盘与机械硬盘 SQL Server 单表插入性能对比测试
  2. 单例模式ARC和非ARC
  3. java高新技术-泛型
  4. 关于UGUI Image Sliced模式的一个BUG。
  5. Linux常用命令 查看进程信息时 copy的-----温故而知新
  6. MySQL Spatial Extensions 地理信息
  7. 3.2版uploadify详细例子(含FF和IE SESSION问题)
  8. 【转】suid sgid 详解
  9. Const和ReadOnly
  10. STL之优先队列(priority_queue)
  11. C# 读取IE缓存文件(1)
  12. 洛谷 P2073 送花【Treap】题解+AC代码
  13. PostgreSQL:安装及中文显示
  14. springboot中访问jsp文件方式
  15. Bad Hair Day POJ - 3250 (单调栈入门题)
  16. C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header"
  17. jquery 计算两个日期相差的天数
  18. delphi正则表达式学习笔记(三)
  19. js-redux学习笔记
  20. NetFPGA Demo ——reference_nic_nf1_cml

热门文章

  1. 看看 Delphi XE2 为 VCL 提供的 14 种样式
  2. python学习笔记:(八)条件语句
  3. Web高效管理多个项目的SVN仓库
  4. 各种CNN模型
  5. C语言第十二周作业
  6. Mysql常用时间函数的用法和应用
  7. dp基础√
  8. [Bzoj1597][Usaco2008 Mar]土地购买(斜率优化)
  9. 不能将X*类型的值分配到X*类型的实体问题的解决方法
  10. [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)