一、单元测试框架
1.单元测试定义
1.1什么是单元测试?
还记不记得我们软件测试学习的时候,按照定义:单元测试就是对单个模块或者是单个类或者是单个函数进行测试。
一般是开发做的,按照阶段来分,一般就是单元测试,集成测试,系统测试,验收测试。
1.2为什么要做单元测试?
1)单元测试之后,才是集成测试,单个单个的功能模块测试通过之后,才能把单个功能模块集成起来做集成测试,为了从底层发现bug,减少合成后出现的问题。
2)越早发现bug越好,这样可以早点发现问题,不然问题累计到后面,如果做错了就要推倒重来,对于时间和经费来说,是非常浪费的!
对于我们测试来说:我们就单元测试是为了执行测试用例!
输入测试数据—>输出测试结果
1.3.unittest框架以及原理介绍
1.3.1 unittest框架最核心的四个概念:
TestCase: 一个testcase的实例就是一个测试用例
TestSuite: 多个测试用例集合在一起。TestLoader:用来加载TestCase到TestSuite中的
TextTestRunner: 用来执行测试用例的
fixTure: 测试用例环境的搭建和销毁。测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。
☆备注:以上4点理论知识将于下面的实践结合起来进行讲解
2.单元测试案例
- 设计测试用例上面的登陆校验功能是否正常?
3.编写测试用例
3.1TestCase类编写测试用例
针对上图的测试用例设计太复杂,我们使用unittest框架来进行设计,如下所示:
★划重点 编写测试用例类的步骤:
①导入unittest模块,被测文件或者其中的类
②定义测试用例类 ,必须继承于unittest.TestCase
③重写setUp和tearDown方法(如果有初始条件或者结束条件)
④定义测试函数(创建测试用例):必须以test开头的函数方法才是一个测试用例
⑤创建测试用例三部曲:
a.第一步:准备测试用例数据、入参、预期结果
b.第二步:执行功能函数,获取实际结果
c.第三步:比对预期结果和实际结果
⑥调用unittest.main()方法运行测试用例
3.2用例的执行顺序
执行顺序是按照ASCII编码来的
4.测试集合
4.1 TestSuite & TestLoader的使用
TestSuite:测试集,把所有的用例都存进来,常用的方法如下:
unittest.TestSuite()
方法一:addTest() 添加一个测试用例
unittest.TestLoader()
方法二:unittest.TestLoader.loadTestsFromModule(模块名)不需要加引号(注意要导入模块)
方法三:unittest.TestLoader.loadTestsFromTestCase(测试类名)不需要加引号
4.2 总结和疑问
5.unittest断言介绍
断言方法
6.执行用例&生成报告
6.1 TextTestRunner的用法
测试用例已经集合完毕,如何来执行测试用例?
需要用到TextTestRunner,执行测试集合,用到的是TextTestRunner(),用run方法。
6.2 测试结果怎么看?
. 代表测试用例通过 一个点代表一个测试用例
E 代表测试用例执行出错了
F 代表测试用例不通过
6.3.生成测试报告
下载HTMLTestRunner的地址:http://tungwaiyip.info/software/HTMLTestRunner.html
下载好的HTMLTestRunner文件放在python安装目录下的Lib文件夹下 然后直接导入就可以使用
生成的HTML报告如下图所示: