python自动化测试框架:unittest测试用例编写及执行

news2024/11/18 11:33:22

本文将介绍 unittest 自动化测试用例编写及执行的相关内容,包括测试用例编写、测试用例执行、测试报告等内容。

官方文档:

https://docs.python.org/zh-cn/3/library/unittest.mock.html

1. 测试用例编写

在 unittest 中,一个测试用例通常由三个组件组成:setup、test 和 teardown。其中,setup 和 teardown 分别用于测试用例的准备和清理工作,test 是实际执行测试的部分。

例如,测试一个函数 add 的功能;

代码实例:

#add函数

def add(a, b):

   return a + b

#测试用例

import unittest

class TestAdd(unittest.TestCase):

   def setUp(self):

       print("setup")

   def test_add(self):

       print("test_add")

       self.assertEqual(add(1, 2), 3)

   def tearDown(self):

       print("teardown")

上面的代码中定义了一个名为 TestAdd 的测试类,其继承 unittest.TestCase 类。在测试类中定义了三个方法:setUp、test_add 和 tearDown。

在 setUp 方法中,编写测试用例的准备工作。在 test_add 方法中,我们编写了实际的测试代码。在本例中,使用了 assertEqual 方法来判断 add 函数的返回值是否等于预期值。

注意:

在编写测试用例时,通常要测试多种情况,需要编写多个测试方法。

前面的文章中也反复强调过unittest 中,测试方法的命名必须以 test_ 开头,以便被 unittest 框架自动识别为测试方法。

2. 测试用例执行

1)指定测试方法执行顺序

默认情况下,unittest 框架会按照测试方法的名称的字典序执行测试用例。若要控制测试用例执行的顺序,可以使用 TestSuite 类。

例如,将上面的测试用例放到一个名为 suite 的测试套件中,并按照 test_add、setUp、test_add、tearDown 的顺序执行:

if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestAdd('test_add'))
suite.addTest(TestAdd('setUp'))
suite.addTest(TestAdd('test_add'))
suite.addTest(TestAdd('tearDown'))
runner = unittest.TextTestRunner()

runner.run(suite)

注意:

测试用例执行的顺序并不是固定的,测试用例之间存在依赖关系,有时候会出现执行顺序不符合预期的情况。因此,在编写测试用例时,需要注意不要产生测试用例之间的耦合或者尽量降低耦合度。

2) 指定测试方法运行

有时我们只想运行一个或几个测试方法,而不是运行整个测试用例,这时候可以使用 unittest 框架提供的参数化运行方式,来实现运行指定测试方法。

例如,仅运行上面的 TestAdd 测试类中的 test_add 测试方法:

if __name__ == '__main__':

unittest.main(argv=['', 'TestAdd.test_add'])

在上述代码示例中,使用 unittest 框架提供的 argv 参数,来指定要运行的测试方法。其中,TestAdd 是测试类的名称,test_add 是测试方法的名称。多个测试方法之间可以使用空格分隔。

注意:

使用 argv 参数运行测试方法时,测试方法名称必须是完整的名称,包括测试类名称。否则,unittest 框架无法识别要运行的测试方法。

3)跳过测试方法执行

有时候,我们需要跳过某个测试方法,例如当测试环境不满足某些条件时,无法进行该测试方法。这时候可以使用 @unittest.skip 装饰器来跳过测试方法。

例如,跳过上面的 TestAdd 测试类中的 test_add 测试方法:

import unittest
class TestAdd(unittest.TestCase):
@unittest.skip("skip test_add")
def test_add(self):

self.assertEqual(add(1, 2), 3)

在上述代码示例中,使用 @unittest.skip 装饰器对 test_add 测试方法进行跳过操作。在 skip 方法中可以指定跳过的原因。

注意:

测试方法中使用了 @unittest.skip 装饰器,那么该测试方法就不会被执行。如果想要恢复执行该测试方法,可以将装饰器注释掉或者删除。

3. 测试用例报告

自动化测试完成后需要生成测试报告,便于测试结果进行分析和统计。unittest 框架提供了多种方式来生成测试用例报告,例如使用 unittest.TextTestRunner 类生成文本报告、使用 HTMLTestRunner 第三方库生成HTML报告等。

例如,使用 unittest.TextTestRunner 类生成文本报告:

if __name__ == '__main__':
suite = unittest.TestLoader().

loadTestsFromTestCase(TestAdd)
with open('test_report.txt', 'w') as f:
runner = unittest.TextTestRunner

(stream=f, verbosity=2)

runner.run(suite)

在上面的示例中,我们使用 unittest.TestLoader 类从测试类 TestAdd 中加载测试用例,并使用 unittest.TextTestRunner 类生成文本报告。使用 stream 参数可以将报告输出到指定文件中。

注意:

生成测试用例报告时,可以设置不同的输出格式、输出位置和输出等级,以满足不同的需求。同时,还可以使用第三方库 HTMLTestRunner 来生成漂亮的HTML报告,以便进行更加直观的分析和展示。


如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流qq群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【二等奖方案】系统访问风险识别「QDU」团队解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台,官号统称DataFountain 或DataFountain数据科学)正在陆续释出各赛题获奖队伍的方案思路。 本方案为【系统访问风险识别】赛题…

精选个人创业计划

精选个人创业计划精选篇1 一、企业概况 以突出“新鲜”“精致”为主要特色。坐落于河北区昆纬路的一个小店,主营鲜花与礼品的零售。它没有亮丽的装潢设计,而是着重朴实的风格,突出了产品的“精”与“美”,成为人们五彩斑斓生活中不…

五年磨一剑——Sealos 云操作系统正式发布!

这是个宏伟的计划 这是一个宏伟的计划,漫长且有趣。 2018 年的某个夜晚,夜深人静,我挥舞键盘,敲下了 Sealos 的第一行代码。当时仓库命名为 “kubeinit”,后来觉得格局太小,我不可能只做一个安装 Kuberne…

2023.6.8-TS-yum update集群后奔溃故障(已解决)

2023.6.8-TS-yum update集群后奔溃故障(已解决) 1、故障背景 自己在安装falco软件时,使用yum update升级了系统后,就出现这个情况了。。。 2、报错现象 kubeclt无法查看pod kubectl get poE0608 09:38:49.094714 2268 memcache.go:265] couldnt ge…

【沐风老师】3dMax一键多边形门(PolyDoor)、窗(PolyWindow)插件使用方法详解

3dMax一键多边形门、窗插件使用教程 3dMax一键多边形门(PolyDoor)、窗(PolyWindow)插件,将选择的多边形面一键转化为门、窗模型。你可以通过编辑多边形的线框(边)来定义门、窗的样式&#xff0…

【备战秋招】每日一题:4月23日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

Stable Diffusion WebUI 环境

Stable Diffusion 是热门的文本到图像的生成扩散模型,本文介绍了如何准备其 WebUI 环境。 Stability AI Stability API Extension for Automatic1111 WebUI Stable Diffusion web UI 环境基础 OS: Ubuntu 22.04.2 LTSKernel: 5.19.0CPU: AMD Ryzen 7 3700XGPU: N…

Docker六脉神剑 - Mac极速体验

说到Docker, 现在可是"家喻户晓"。但是随着Docker的生态越来越强大, 资料越来越多, 反而对新手越来越不友好, 好多人准备学习一下, 但是又不知从哪入手? 想要玩Docker, 首先要先明白, Docker是干嘛的?可以解决什么问题?使用Docker可…

Linux中的用户和组的分类

目录 Linux中的用户和组的分类 用户分类 超级用户 系统用户 普通用户 组的分类 基本组(私有组) 附加组(公有组) 系统组 Linux中用户和用户组的配置文件 在Linux中,用户账号、密码、用户组信息和用户组密码均…

【滤波】无迹卡尔曼滤波

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第10章节10-Unscented-Kalman-Filter(无迹卡尔曼滤波)。 %matplotlib inline# format the book import book_format book_format.set_style()前文 在上一章中,我们讨论了非线…

Elasticsearch:使用 ELSER 进行语义搜索

Elastic Learned Sparse EncodeR(或 ELSER)是一种由 Elastic 训练的 NLP 模型,使你能够使用稀疏向量表示来执行语义搜索。 语义搜索不是根据搜索词进行字面匹配,而是根据搜索查询的意图和上下文含义检索结果。 本教程中的说明向你…

【QQ界面展示-设置背景图拉伸方式 Objective-C语言】

一、接下来,我们就给大家设一下这个正文的背景图 1.因为我们现在,我们现在看一下, 在我们这个示例程序里面,正文,根据时你发的消息,还是对方发的消息,正文这个背景图,是不一样的, 所以说,这个正文的背景图,也要根据数据来判断, 判断数据里面那个类型是对方,还是…

端口隔离是什么?为什么需要端口隔离、如何实现端口隔离?

目录 一. 什么是端口隔离 二. 为什么需要端口隔离 三. 端口隔离的原理 1. 硬件隔离 2. 软件隔离 四. 端口隔离的实现方法 1. VLAN 2. 网络隔离 3. 防火墙 五. VLAN端口隔离 1. VLAN端口隔离方式 2. VLAN端口隔离配置案例 3. VLAN 端口隔离的注意事项 六. 端口隔离…

【数据库】Mysql数据库初体验

文章目录 一、数据库基本概念1. 数据 (Data)的概念2. 表的概念3. 数据库的概念4. 数据库管理系统5. 数据库系统 二、 数据库的发展1. 第一代数据库2. 第二代数据库3. 第三代数据库 三、主流的数据库介绍1. SQL Server(微软公司产品)2. Oracle &#xff0…

35. QT中执行linux命令或者shell脚本

1. 说明 Qt在linux系统中进行软件开发时,有时需要通过qt调用命令行终端执行一些命令,可以比较快速方便的实现某些功能。在qt中调用命令行终端,相当于启动了另外一个应用程序,此时可以借助Qt提供的辅助类QProcess来实现,当然也有其它的实现方式,因为QProcess使用有很多优…

pytest自动化测试框架基础篇

目录 前言: 一、单元测试框架 二、pytest简介以及常用插件安装 三、pytest默认测试用例的规则以及基础应用 四、pytest跳过测试用例 五、pytest测试用例的前后置,固件 前言: pytest是一个基于Python语言的自动化测试框架,它…

声网云市场 —— 实时互动开发者的 API 商店

声网云市场是面向实时互动开发者的 API 商店,让开发者在使用声网 RTC 的同时,可以快速集成实时互动扩展能力,比如美颜、变声、语音转文字、实时翻译、视频审核、语音审核等等,让开发者专注在业务逻辑和用户体验上,免去…

ESXi 7.0 U3m Lenovo (联想) 定制版 OEM Custom Installer CD

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

RTX3070安装spconv1.1

系统环境: torch:1.8.1 cuda:11.1 cudnn:8.0.5 cpu:RTX3070 gcc:7.5.0(g 7.5.0,c14需要g5.2以上) cmake:3.18.3(3.13.2及以上) 第一步环境配置 在开始安装前,需要确保已经安装cuda和cudnn。 …

微软 AI 华人先驱黄学东正式宣布离职,将加入 Zoom 担任 CTO

微软华人 AI 版图上一块不可或缺的拼图,现在也离开了。 雷峰网独家获悉,微软 AI 华人先驱黄学东在社交媒体正式宣布从微软离职,将加入 Zoom 担任 CTO。 上世纪六十年代出生的黄学东是与变化共生、在变化中成长的一代人。 1962年&#xff0c…