当前位置:网站首页 > 技术博客 > 正文

unittest框架介绍



如果想学习下其他知识,可以去看看下面这些文章哦!

selenium系列:https://www.cnblogs.com/miki-peng/category/1942527.html

接口自动化系列:https://www.cnblogs.com/miki-peng/category/1671261.html

python基础:https://www.cnblogs.com/miki-peng/category/1636367.html

​ 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类,一般是开发来做的,按照测试阶段来分,就是单元测试、集成测试、系统测试以及验收测试。

  • 📕 单元测试之后,才是集成测试,单个单个的功能模块测试通过之后,才能把单个功能模块集成起来做集成测试,为了从底层发现bug,单元测试时可以减少合成后出现的问题。
  • 📒 越早发现bug越好,这样可以早点发现问题,不然问题累计到后面,很可能会因为一个做错了而导致整个模块甚至更大范围的推倒重来,对于时间和经费来说,是非常浪费的!
  • 📘 对于测试来说,单元测试就是为了执行用例,输入测试数据--》输出测试结果

​ 做过自动化测试的同学应该都知道python中的unittest框架,它是python自带的一套测试框架,学习起来也相对较容易,unittest框架最核心的四个概念:

​ 🍊 test case:就是我们的测试用例,unittest中提供了一个基本类TestCase,可以用来创建新的测试用例,一个TestCase的实例就是一个测试用例;unittest中测试用例方法都是以test开头的,且执行顺序会按照方法名的ASCII值排序。

​ 🍅 test fixure:测试夹具,用于测试用例环境的搭建和销毁。即用例测试前准备环境的搭建(SetUp前置条件),测试后环境的还原(TearDown后置条件),比如测试前需要登录获取token等就是测试用例需要的环境,运行完后执行下一个用例前需要还原环境,以免影响下一条用例的测试结果。

​ 🍋 test suite:测试套件,用来把需要一起执行的测试用例集中放到一块执行,相当于一个篮子。我们可以使用TestLoader来加载测试用例到测试套件中。

​ 🍇 test runner:用来执行测试用例的,并返回测试用例的执行结果。它还可以用图形或者文本接口,把返回的测试结果更形象的展现出来,如:HTMLTestRunner。

​ 在python基础中,我们有讲过一个assert断言,使用方法比较简单,即,而unittest框架中也提供了一个自带的断言方式,主要有以下几种:

方法 检查 assertEqual(a, b,msg=None) a ==b assertNotEqual(a, b) a !=b assertTrue(x) bool(x) is True assertFalse(x) Bool(x) is False assertIs(a, b) a is b assertIsNot(a, b) a is not b assertIsNone(x) x is None assertIsNotNone(x) x is not None assertIn(a, b) a in b assertNotIn(a, b) a not in b assertIsInstance(a, b) isinstance(a,b) assertNotIsInstance(a, b) not isinstance(a,b)

​ 如果断言失败即不通过就会抛出一个断言错误,成功则标识为通过,以上几种方式都有一个共同点,就是都有一个msg参数(表中只列了一个,其实都有),默认是None,即,如果指定msg参数的值,则将该信息作为失败的错误信息返回。

编写测试用例前,我们需要建一个测试类继承unittest里面的TestCase类,继承这个类之后我们才是真正的使用unittest框架去写测试用例,编写测试用例的步骤如下:

  • 导入unittest模块
  • 创建一个测试类,并继承
  • 定义测试方法,方法名必须以test_开头
  • 调用方法来运行测试用例,unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行

下面以注册功能为例,这个register.py就是注册功能的代码,没有前端界面,功能比较简单,只是方便用于演示,直接导入就可以使用。

 

​ 下面是编写测试用例例子:

 

​ 上面传递测试数据处用到一个*解包,我在python基础中有讲过解包的原理和例子,不明白的可以往回翻看一下,传送门:https://www.cnblogs.com/miki-peng/p/12229199.html

​ 测试用例运行结果如下,一共4条用例,其中通过3条,不通过1条,不通过的是本身注册代码的bug。

 

​ unittest的测试夹具有两种使用方式,一种是以测试方法为维度的和,一种是以测试类为维度的和。以注册功能为例,但这个注册代码比较简单,没有真正需要用到测试夹具的地方,因此这只是个用法演示。

 

​ 运行结果:

 

​ unittest.TestSuite()类来表示一个测试用例集,把需要执行的用例类或模块存到一起,常用的方法如下:

  • 🍊 unittest.TestSuite()
    • :添加单个测试用例方法
    • :添加多个测试用例方法,方法名存在一个列表
  • 🍊 unittest.TestLoader()
    • :添加一个测试类
    • :添加一个模块
    • :指定目录去加载,会自动寻找这个目录下所有符合命名规则的测试用例
 

​ 通常我们使用方式4、5比较多,你可以根据实际情况来运用。其中方式5,还可以自定义匹配规则,默认是会寻找目录下文件,即所有以test开头命名的py文件,自定义如下:

 

​ test runner顾名思义就是用来执行测试用例的,并且可以生成相应的测试报告。测试报告有两种展示形式,一种是text文本,一种是html格式。

​ html格式的就是HTMLTestRunner了,是 Python 标准库的 unittest 框架的一个扩展,它可以生成一个直观清晰的 HTML 测试报告。使用的前提就是要下载 HTMLTestRunner.py,下载完后放在python的安装目录下的scripts目录下即可。

​ text文本相对于html来说过于简陋,与控制台输出的没有什么区别,也几乎没有人使用,这里不作演示,使用方法是一样的。我们结合前面的测试套件来演示一下如何生成html格式的测试报告:

 

相关参数说明:

  • :指定输出的方式
  • :报告中要显示的测试人员的名字
  • :报告中要显示的面熟信息
  • :测试报告的标题
  • :表示测试报告信息的详细程度,一共三个值,默认是2
    • 0 (静默模式):你只能获得总的测试用例数和总的结果,如:总共100个 失败10 成功90
    • 1 (默认模式):类似静默模式,只是在每个成功的用例前面有个. 每个失败的用例前面有个F
    • 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息

​ 运行完毕,你会发现你的项目目录下已经生成了一个report.html文件,在浏览器中打开,就可以查看测试报告了。

image-20200315232546384

  • 上一篇: mvvm react
  • 下一篇: 特征选择pca
  • 版权声明


    相关文章:

  • mvvm react2025-03-27 08:29:59
  • c语言中指针p++到底什么意思2025-03-27 08:29:59
  • 电脑阅读器推荐2025-03-27 08:29:59
  • c++中sprintf2025-03-27 08:29:59
  • ir2104原理讲解2025-03-27 08:29:59
  • 特征选择pca2025-03-27 08:29:59
  • mysql日期时间函数大全2025-03-27 08:29:59
  • asx文件怎么打开2025-03-27 08:29:59
  • java怎么调用jframe窗口2025-03-27 08:29:59
  • windows测试路由命令2025-03-27 08:29:59