百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

ccwgpt 2024-10-04 13:50 37 浏览 0 评论

单元测试的概念

  • 单元测试(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开头

示例代码:

如何执行测试用例

方式一:使用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:为测试套件名称

示例代码:

五、Fixture

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

Fixture控制级别:

方法级别使用:

类级别使用:

模块级别【了解】使用:

示例代码使用:

六、UnitTest 断言

什么是断言

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

使用方式:

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

七、UnitT est 参数化

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

安装parameterized

pip install parameterized

parameterized 使用方式

  • 导包:from par ameterized import par ameterized
  • 使用@par ameterized.e xpand 装饰器可以为测试函数的参数进行参数化示例代码

示例代码

八、生成HTML 测试报告

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

为什么要生成测试报告:

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

使用HTML TestRunner 生成测试报告

使用方法:

示例代码:

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: