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

大神总结unitest单元测试框架实战笔记

ccwgpt 2024-10-09 08:37 22 浏览 0 评论

本文章出自【码同学软件测试

码同学公众号:自动化软件测试

码同学抖音号:小码哥聊软件测试


我们想让将多个单测case 按照一定规则或者规范,统一一个入口执行。而不去人工手动每次单个执行,这就是测试集成的初衷吧。

unittest 可以基本实现我们想要的东西。官方文档:http://navo.top/ymIzei

unittest 整体来讲分为如下几个大的模块(官方解读):

测试脚手架

test fixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。

测试用例

一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase,用于新建测试用例。

测试套件

test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。

测试运行器(test runner)

test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。

下图借用原文地址:https://blog.csdn.net/huilan_same/article/details/52944782

具体操作我们来看如下demo:

1.测试用例

创建一个被测试对象以及方法 mathfunc.py:

创建一个case 文件 testMathfunc.py

如上,一个完成一个case 主要分:

  • 1.开始之前环境部署,资源预制方法,def setUp(self):
  • 2.测试结束,环境恢复,资源恢复,def tearDown(self):
  • 3.测试内容,def test_***(self):,测试内容中应该有至少一次断言。
  • 4.测试执行,unittest.main()


免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦


另外:

setUp 和tearDown 是每次执行测试内容都会执行,有些时候我们想在这个cases 执行前后仅执行一次环境部署和环境恢复。unittest 提供了方法,

还有:

当犹豫某些原因我们不想去执行或者需要达到某些条件时候采取执行一些case ,unittest 提供了跳过case 的一些装饰器,如下原文内容

@unittest.skip(reason)

跳过被此装饰器装饰的测试。 reason 为测试被跳过的原因。

@unittest.skipIf(condition, reason)

condition 为真时,跳过被装饰的测试。

@unittest.skipUnless(condition, reason)

跳过被装饰的测试,除非 condition 为真。

@unittest.expectedFailure

把测试标记为预计失败。如果测试不通过,会被认为测试成功;如果测试通过了,则被认为是测试失败。

exception unittest.SkipTest(reason)

引发此异常以跳过一个测试。

通常来说,你可以使用 TestCase.skipTest() 或其中一个跳过测试的装饰器实现跳过测试的功能,而不是直接引发此异常。

被跳过的测试的 setUp() 和 tearDown() 不会被运行。被跳过的类的 setUpClass() 和 tearDownClass() 不会被运行。被跳过的模组的 setUpModule() 和 tearDownModule() 不会被运行。

2.测试套件

如上case 中我们使用了main 方法执行单case,仅使用与调试使用,工厂模式下我们通常使用测试套件,就是将所有需要执行的测试用例放在一个套子里,然后我们通过执行这个套件,来执行所有case。

方法一

创建测试套件 test_suite.py,

这是最基础的测试套件运行测试用例方法,需要手工加入测试用例名,如果成千上万的测试用例,就无法这么操作了。

当然,unittest还提供了,测试用例加载器,我们只需要提供测试用例名,测试文件名,或者其他。

方法二

这些都是针对于一个类中所有case 的一个集成测试。拿如果我们有多个类,或者多个文件时候,这些方法就不适用了。新版本3.7以后,我们可以使用discover方法只需要指定测试文件的文件夹地址即可,该方法同样适用以上情况如下:

方法三

3.测试运行器(test runner)

如上,我们使用直接调用TestTestRunner() 方法,执行测试套件,结果只能打印在控制台。那么我们想存放输出的结果怎么办?

方法一

如上我们已经能够永久性的查看执行过程和结果数据。但是对于公司使用,或者他人查看,我们 可能需要生成报告形式更直观些。这里我们使用HTMLTestRunner.py文件(感谢大神操作),该文件是开源的,但你找到的可能是这对2.7 版本的,我个人用的3.7,文件部分地方需要修改。直接将文件放百度网盘了自取:

地址:https://pan.baidu.com/s/1YKIrg53eaeyvklXJZVx85A

提取码:obvq

看到网上有人说放在你的python/lib下,但是我这边提示“no module”,个人放在工程目录下。顺便看下测试工程目录:

然后我们使用HTMLTestRunner 生成html 报告文件:

运行结果:

控制台输出:

报告文件:result.html

另外:

运行器可以指定参数,

1.TextTestRunner执行器中,verbosity参数0,1,2,不同等级信息,依次增多。

遗留问题:

如果让报告中展示sikp case ,如何在airttest 中使用unitest 集成测试。


END

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

相关推荐

谷歌正在为Play商店进行Material Design改造

谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...

企业网站免费搭建,定制化建站CMS系统

科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...

您需要的 11 个免费 Chrome 扩展程序

来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...

户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案

  在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。  从其结构设计来看,矩形框架虽主要为适配紧凑空...

一个基于NetCore开发的前后端分离CMS系统

今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...

本地Docker部署ZFile网盘打造个人云存储

前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...

pcfcms企业建站系统 免费+开源的企业内容管理系统

项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...

【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...

java开源cms管理系统框架PublicCMS后台管理系统

一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...

一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!

一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...

《搜神札记》:不应磨灭的惊奇(小说《搜神记》)

□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...

《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)

“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...

《助人技术》第一章助人引论内容框架

第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...

AI助手重构读后感写作流程:从提纲到完整性思考的转换

大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...

图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)

做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...

取消回复欢迎 发表评论: