51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1918|回复: 0
打印 上一主题 下一主题

[转贴] Python unittest 之一: 什么是单元测试

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:04
  • 签到天数: 942 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-9-29 11:27:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     unittest 是 Python自带的 单元测试框架。那么我们首先需要知道什么是单元测试。
      单元测试,也是测试活动的一种。通常我们把 单元测试 unit test、 集成测试 Integration Test、系统测试 System test放在一起比较。
      单元测试
      通常是测试一小块代码的功能,比如一个函数,类的一个方法。
      集成测试
      通常是把被测系统的几个相互之间有交互的模块(或者说子系统)作为一个整体进行测试。和单元测试相比,集成测试中的被测对象 更大一些,是子系统级别的测试。
      系统测试
      有的人也叫 端到端的测试,或者说功能测试。则是把整个被测系统看做一个整体进行测试。它的测试对象就更大了,是整个系统级别的测试。通常也是由测试部门做的测试。
      从上面的描述中,我们可以看出:
      · 单元测试通常是开发人员做的一种测试,通常是测试 函数,方法这种级别的代码块的。
      · 单元测试大都是 设计出不同的调用参数来调用函数,来看 函数 的输出是否符合预期。
      当然如果你的代码写的不好的话, 单元测试也会比较麻烦。比如一个功能模块没有内聚到函数中,而是分散在代码文件里面。那样,就不容易用一个函数调用对这些功能进行测试。出现这种情况,说明代码质量是比较糟糕的。所以有的团队把代码是否容易单元测试作为代码质量的一个指标。
      通常单元测试也是整个 项目质量的基石。通常单元测试做的好的项目, 隐藏bug的几率就会比较少。项目后期的bug会原来越少,呈现出一种收敛的趋势。这样就会减少项目回归测试的次数。
      为什么?
      做过项目开发的就知道, 不成熟的团队,经常是改了一个bug引起新的bug。根据经验来看, 导致这种原因的,就是某些函数、小模块。
      如果单元测试做的很好, 这些小模块的隐患在前期就被消除了。就不会出现上述的情况。
      当然,集成测试和系统测试发现问题,最终的根源也出在代码上, 可能就是某个函数的bug,但是它们不是专门针对函数级别测试的。通常单元测试发现bug效率最高,代价最小。因为该测试是在了解内部小模块的实现细节的基础上做的测试。针对性非常强。
      通常单元测试的好处不仅是减少了bug,而且还促使你优化代码结构,设计出更易于理解和维护的代码。
      单元测试既然有这么多好处,那么自然的,Python语言就在标准库里面提供了一个 单元测试的框架, 就叫unittest
      python中的unittest是受java里面的JUnit的启发而创建的。并且和它有类似的使用风格。
      比如:支持自动化,支持初始化、清除设置,将测试组织成 用例、套件这样的层次关系。
      要学习unittest,我们先要理解下面几个重要概念:
      test fixture:装置
      表示要进行 某些测试前的准备工作 和 结束后的清除工作。 比如要测试一个数据库查找 学生数据的函数,准备工作 就可以是连接数据库, 清除工作可以是 断开和数据库的连接。
      test case:用例
      这个就是 具体的 对单个函数、方法 的测试工作了。 检查某个函数或者方法一个测试点的功能是否正确。
      test suite:套件
      这是 test case 或者其他test suite 的集合。如果测试用例比作文件的话, suite就像文件夹。包含了文件和其他文件夹。
      test runner: 执行器
      它是 最终控制测试 执行 , 并且输出测试结果的模块。 它可以提供一个图形界面 也可以提供 命令行界面给 用户使用,来选择执行测试,并且呈现测试结果。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-7 11:32 , Processed in 0.066486 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表