软件测试学习教程:单元测试之UnitTest测试框架

单元测试的概念

  • 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。
  • 对于单元测试中单元的含义,要根据实际情况去判定其具体含义。
  • 一个单元可能是功能模块、类、方法(函数)等。

单元测试工具

不同的编程语言都有比较成熟的单元测试框架,语法规则有些差别,其核心思想都是相通的。常见的单

元测试框架有:

Java语言:Junit、TestNG

Python语言:UnitTest、Pytest

UnitTest单元测试框架

一、UnitTest框架介绍

UnitTest是Python自带的一个单元测试框架,用它来做单元测试。也经常应用到UI自动化测试和接口自

动化测试中,用来管理和维护测试用例脚本

使用UnitTest框架的好处:

1. 能够组织多个用例去执行(可以把多条测试用例封装成一个测试套件,实现批量执行测试用例)

2. 提供了丰富的断言方法,方便对用例执行的结果进行判断

3. 能够生成HTML格式的测试报告

4. 使用Fixture功能可以减少代码的冗余

UnitTest核心要素:

  • TestCase
  • TestSuite
  • TestRunner
  • TestLoader

二、TestCase

TestCase就是表示测试用例

案例

定义一个实现加法操作的函数,并对该函数进行测试

如何定义测试用例

1.导包:importunittest

2.定义测试类:新建测试类必须继承unittest.TestCase

3.定义测试方法:测试方法名称命名必须以test开头

示例代码:

软件测试学习教程:单元测试之UnitTest测试框架

如何执行测试用例

方式一:使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行

方式二:调用unittest.main()来运行

三、TestSuite

说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite使用:

  • 实例化:suite=unittest.TestSuite() (suite:为TestSuite实例化的名称)
  • 添加用例:suite.addTest(ClassName("MethodName"))(ClassName:为类名;MethodName:为方法名)
  • 添加扩展:suite.addTest(unittest.makeSuite(ClassName))(搜索指定ClassName内test开头的方法并添加到测试套件中)
  • 提示:TestSuite需要配合TestRunner才能被执行

四、TextTestRunner

说明:TextTestRunner是用来执行测试用例和测试套件的使用:

1.实例化:runner=unittest.TextTestRunner()

2.执行:runner.run(suite)#suite:为测试套件名称

示例代码:

软件测试学习教程:单元测试之UnitTest测试框架

五、Fixture

说明:Fixture是一个概述,对一个测试用例环境的初始化和销毁就是一个Fixture

Fixture控制级别:

方法级别使用:

软件测试学习教程:单元测试之UnitTest测试框架

类级别使用:

软件测试学习教程:单元测试之UnitTest测试框架

模块级别【了解】使用:

软件测试学习教程:单元测试之UnitTest测试框架

示例代码使用:

软件测试学习教程:单元测试之UnitTest测试框架

六、UnitTest 断言

什么是断言

概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程UnitTest 中提供了非常丰富的断言方法,但是常用的也就那么几个,并且使用起来也比较简单。

软件测试学习教程:单元测试之UnitTest测试框架

使用方式:

断言方法经在unittest.TestCase 类中定义好了,而且我们自定义的测试类已经继承了 TestCase ,所以在测试方法中直接调用即可。

软件测试学习教程:单元测试之UnitTest测试框架

七、UnitT est 参数化

  • 通过参数的方式来传递数据,从而实现数据和脚本分离,也可以把测试数据定义到数据文件或者数据库中。
  • 针对同一个测试方法,可以实现用例的重复执行,减少代码冗余,提高测试效率。
  • unittest测试框架,本身不支持参数化,但是可以通过安装 unittest 扩展插件rameterized 来实现。

安装parameterized

pip install parameterized

parameterized 使用方式

  • 导包:from par ameterized import par ameterized
  • 使用@par ameterized.e xpand 装饰器可以为测试函数的参数进行参数化示例代码
软件测试学习教程:单元测试之UnitTest测试框架

示例代码

软件测试学习教程:单元测试之UnitTest测试框架

八、生成HTML 测试报告

测试脚本执行完后,可以生成以 HTML( 网页 ) 格式的测试报告

为什么要生成测试报告:

  • 测试报告是本次测试结果的体现形态
  • 测试报告内包含了有关本次测试用例的详情

使用HTML TestRunner 生成测试报告

使用方法:

软件测试学习教程:单元测试之UnitTest测试框架

示例代码:

软件测试学习教程:单元测试之UnitTest测试框架