• 首页

  • 分类&标签

  • 归档

  • 手册

  • 项目池

  • 友链

  • 关于
伯 乐 讲 堂
伯 乐 讲 堂

查看「系列思维导图」

侠客 · Mr.潘

获取中...

09
13
小Python 起步

第 12 节 小Python 之单元测试

发表于 2020-09-13 • Python • 被 884 人看爆

在现实世界,“一切不以结婚为目的谈恋爱都是耍流氓”,在编程世界,“一切不以单元测试为收尾的编程都是耍流氓”。

1. 概要

单元测试是一种软件测试方法,通过该方法测试各个单位的源代码,如函数,方法和类,以确定它们是否适合使用。直观地,可以将单元视为应用程序中最小的可测试部分。单元测试是程序员在开发过程中创建的短代码片段,它构成组件测试的基础。学好这部分内容,将为后续的 Python栈 自动化测试打下坚实的基础。

unittest 是 Python 自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架。

unittest 中最核心的四个概念是:TestCase, TestSuite, TestLoader, TestResult。

下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图。

121.png

unittest.TestCase:测试用例类,所有用户定义的测试类都必须继承自此类才会被识别为测试类,提供的测试脚手架(TestFixture)和断言能力。

TestFixture:测试脚手架,表示执行一个或多个测试以及任何关联清理操作所需的准备工作。这可能涉及例如创建临时或代理数据库,目录或启动服务器进程。

unittest.TestSuite:测试套件类,这是测试用例、测试套件或两者的集合。这用于聚合应该一起执行的测试。测试套件由 TestSuite 类实现。

unittest.TestLoader:测试扫描类,用于自动发现提取测试类,测试用例。

unittest.TestResult:测试结果类,用来处理测试用例或测试集执行过程中的所有信息并最终输出,比如代码错误、异常、断言失败、skip等等。所以如果想要增加一些个性化的输出,可以通过扩展此类,如:HTMLTestRunner、BeautifulReport 就是比较常用的两个第三方扩展。

2. 创建单元测试

步骤1 - 在程序中导入unittest模块。

步骤2 - 定义要测试的功能。在下面的例子中,add() 函数要进行测试。

步骤3 - 通过对unittest.TestCase进行子类化创建测试用例。

步骤4 - 将测试定义为类中的方法。方法名称必须以"test"开头。

步骤5 - 每个测试调用TestCase类的断言功能。有许多类型的断言。以下示例调用assertEquals()函数。

步骤6 - assertEquals()函数将add()函数与arg2参数的结果进行比较,如果比较失败,则抛出assertionError。

步骤7 - 最后,从unittest模块调用main()方法。

'''
@File    :   unittest_demo.py
@Time    :   2020/09/23
@Author  :   Mr.潘
@Desc    :   单元测试使用
@Desc    :   助力软件测试行业,邀请你身边的小伙伴,共同加入软件行业,敬请找我!成为我的口碑学员,终生技术支持!
@Contact :   email: pansfy@163.com , QQ: 1246928388
@License :   (C)Copyright 2020-2021, http://pansaifei.com
'''

def add(x, y):
   return x + y


import unittest

class SimpleTest(unittest.TestCase):
   def test_add_01(self):
      self.assertEquals(add(4, 5), 9)

   def test_add_02(self):
      self.assertEquals(add(10, 5), 15) 


if __name__ == "__main__":
   unittest.main()

步骤8 - 从命令行运行上述脚本。

D:Python37>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 2 test in 0.001s
OK
标题:第 12 节 小Python 之单元测试
作者:侠客 · Mr.潘

读后有收获可以支付宝请作者喝咖啡,读后有疑问请加在下微信(pansfy)讨论:

第 1 节 企业级系统环境概要
第 11 节 小Python 之异常处理
侠客 · Mr.潘

侠客 · Mr.潘

未来的你,会感谢今天仍正在奋斗的你

Github QQ Email RSS
看爆 Top10
  • 助力项目池 3,702次看爆
  • 第 4 节 yum 版的 LAMP 环境部署 2,633次看爆
  • 你的生产力工具集成就高效人士 1,996次看爆
  • 第 5 节 yum 版的 LNMP 环境部署 1,745次看爆
  • 第 3 节 企业级系统环境之上云篇 1,503次看爆
  • 服务端的架构的演进之路 1,366次看爆
  • 第 1 节 Docker 实践 1,252次看爆
  • Docker本地私有镜像仓库Harbor搭建及配置 1,091次看爆
  • 镜像仓库一文打尽 1,065次看爆
  • 第 2 节 企业级系统环境之本地化 1,009次看爆

Copyright © 2023 侠客 · Mr.潘 · 苏ICP备19067937号

Proudly published with Halo · Theme by fyang · 站点地图