用Python unittest搭建自动化测试框架

news2024/10/6 16:21:26

unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多。

unittest核心工作原理

unittest中最核心的四个概念是:test case, test suite, test runner, test fixture。

下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接):


一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。

TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

而对一个测试用例环境的搭建和销毁,是一个fixture。

一个class继承了unittest.TestCase,便是一个测试用例,但如果其中有多个以 test 开头的方法,那么每有一个这样的方法,在load的时候便会生成一个TestCase实例,如:一个class中有四个test_xxx方法,最后在load到suite中时也有四个测试用例。

到这里整个流程就清楚了:

写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。这里加个说明,在Runner执行时,默认将执行结果输出到控制台,我们可以设置其输出到文件,在文件中查看结果(你可能听说过HTMLTestRunner,是的,通过它可以将结果输出到HTML中,生成漂亮的报告,它跟TextTestRunner是一样的,从名字就能看出来,这个我们后面再说)

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

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

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

相关文章

华为OD机试 - 人数最多的站点(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

【mybatis】

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 ORM框架是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文…

【Yolov5】深度模型进行训练-CPU版

yolo5模型训练1.yolov5自己的模型训练1.1 git下载对应的源码到服务器1.2 从最新的 YOLOv5版本自动下载模型。1.3 detect.py 推断1.4 train.py进行训练1.5 yolo的原理2.训练自己的模型2.1 Data下面新建如图目录Mydata2.1 lableimg进行数据标注的图形2.2 数据集2.3 train.py调整d…

IP 协议

1.IP协议报头如下图:版本号 代表的是当前的IP协议的版本,此处的版本一共有两个取值:v4和v6.本文着重针对v4版本进行解析.首部长度 代表的是整个IP报头的长度,这个报头长度是可变长的,可变长的原因在于报头中的选项,这个属性是一个可有可无的属性,会改变报头长度,它的单位是32bi…

5个原因告诉您为什么要拥有个人IP

在数字时代中,信息每分每秒都在飞速地增长,对于企业和个人来说,获得关注变得越来越具有挑战性。如果您希望在网上创造某种形式的存在感,保持内容的原创性和新鲜度是您通往成功的路上不可避免的挑战。尽管如此,从竞争对…

电商项目之Feign与Dubbo技术选型

文章目录1 问题背景2 前言3 思路4 Feign与Dubbo的区别5 总结6 真实案例1 问题背景 电商项目,B端以consul作为注册中心。重构了一个营销服务,以Nacos作为注册中心。B端需要调用营销服务。关于远程调用框架,营销服务用了Dubbo,而B端…

吉卜力风格水彩画怎么画?

著名的水彩艺术家陈坚曾说:“水彩是用水润调和形成的饱和度极高的艺术画面,在纸上晕染的画面面积、强度等具有许多随意性,天空的颜色乌云密布,都是很随意的,难以模仿。” 是的,水彩画的妙处就在于不确定的…

C语言数据结构初阶(1)----时空复杂度

目录 1. 数据结构,算法的概念 2. 算法的效率 2.1 算法复杂度 3. 时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 3.3 小试牛刀 4. 算法的空间复杂度 4.1 小试牛刀 1. 数据结构,算法的概念 数据结构(Data Structure)是计算机存储、组织数据…

2023从0开始学性能(3) —— 探索性能测试流程2

性能测试计划 性能测试的计划中应该由项目描述、项目的业务模型和性能指标(指标来源于调研需求中预期指标),性能测试环境说明(前期调研的配置信息)以及测试的场景设计,具体的我们后面再慢慢说。 性能测试场…

4123版驱动最新支持《霍格沃茨之遗》,英特尔锐炫显卡带你畅游魔法世界

2023年开年最火的3A大作,那一定是近期上架steam平台的《霍格沃茨之遗》,这款游戏在2020年9月份曝光,游戏根据《哈利波特》系列书籍内容改编,作为一款开放式的3A大作,《霍格沃兹之遗》目前在steam上的实时在线人数已经突…

客户体验:客户对企业产生的所有交互与感知!

“客户体验是一种纯主观的在用户使用产品过程中建立起来的感受。良好的用户体验有助于公司不断完善产品或服务。正是这所有用户接触的感受差异,构成了用户对一家公司独特的体验认知。”说白了,客户体验就是客户和公司接触产生的感受。客户体验主要关注客…

JS的事件循环

文章目录写在前面1.浏览器的进程模型1.1 何为进程1.2 何为线程1.3 浏览器有哪些线程和进程2.渲染主线程是如何工作的任务队列的优先级面试题如何理解JS异步JS中的计时器能做到精确计时吗?为什么?写在前面 此处的文字为自己的理解 1.浏览器的进程模型 1.…

git的安装及git的使用方法和指令

Git的使用什么是版本控制?什么是 Git?人工版本控制器版本控制工具常见版本控制工具怎么工作的?git 文件生命周期状态区域安装配置-- global检查配置创建仓库 - repository工作流与基本操作查看工作区的文件状态如果显示乱码的解决方式git sta…

JUC并发编程(下)

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 学习地址 写在最前 JUC并发编程(上) JUC(Java Util Concurrent)学习内容框架&…

Leetcode第530题二叉搜索树的最小绝对差|C语言

刚开始看到这道题,习惯性的找了搜索树的最左下和最右下的结点进行计算。结果发现要求返回的是“任意两个结点”的差的绝对值中最小的值。 思路:看了答案,因为二叉搜索树的中序遍历是有序数组,因此可以采用中序遍历对相邻结点之间进…

合约检测之slither(草稿)

一、Slither 介绍及运行流程 Slither 是一个静态分析框架,它通过将 Solidity 智能合约转换为称为 SlithIR 的中间表示来工作。 SlithIR 使用静态单一赋值 (SSA) 形式和精简指令集来减慢分析执行速度,同时保留在 Solidity 转换为字节码时可用的语义信息。…

GEE学习笔记 六十一:颜值就是战斗力

引用网络名人局座的一句话:“颜值越高的武器,战斗力越强”。对于我们做开发也是,使用的工具颜值越高,我们越喜欢使用。Google Earth Engine在线编辑器(https://code.earthengine.google.com/)虽然目前还不是…

【Proteus仿真】【STM32单片机】环境监测系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、蜂鸣器、按键模块、DHT11温湿度传感器、继电器加热祛湿加湿模块等。 主要功能: 系统运行后,LCD1602显示…

实现达梦数据库 disql 工具在 Linux 系统里上下翻动查看和编辑历史命令

本文内容已在如下环境上测试: 操作系统:银河麒麟10 数据库版本:达梦8 一、默认情况下,在 Linux 系统中使用 disql 命令时,若使用键盘的上下键查找历史命令复用,会出现乱码,导致在 Linux 上编写…

Scala的简单使用

文章目录Scala的简单使用(一)交互模式1、命令行方式2、文件方式(二)编译模式1、创建源程序2、编译成字节码3、解释执行对象Scala的简单使用 Scala可以在交互模式和编译模式两种方式下运行 (一)交互模式 在…