【自动化测试框架】关于unitttest你需要知道的事

news2024/11/16 3:26:41

一、UnitTest单元测试框架提供了那些功能

1.提供用例组织和执行

如何定义一条“测试用例”?
如何灵活地控制这些“测试用例”的执行?

2.提供丰定的断言方法

当测试用例的执行结果与预期结果不一致时,判定测试用例失败。在自动化测试中,通过“断言”来判定测试用例执行成功与否,测试框架提供丰富的断言方法,例如:判断相等/不相等包含/不包含、True/False等

3.提供丰富的日志

需要从结果中清晰地看出失败的原因。另外,我们还需要统计测试用例的执行结果,如总执行时间、失败测试用例数、成功测试用例数等,这些功能也是由单元测试框架提供的。

二、认识unittest

1.引入unittest模块,自定义的类必须要继承unittest模块的TestCase类

2.创建的测试方法,必须以test开头

3.重要的概念

3.1 TestCase

Test Case是最小测试单元,用于检查特定输入集合的特定返回值。unittest提供的TestCase基类被自定义的测试类进行继承,它可以用来创建新的测试用例

3.2 TestSuite

测试套件事测试用例\测试套件或者两者的集合,用于组装一组要运行的测试

3.3 Test Runner

Test Runner是一个组件,用于协调测试的执行并向用户提供结果。Test Runner可以用图形界面、文本界面或返回特殊值来展示执行测试的结果

3.4 Test Fixture

Test Fixture代表执行一个或多个测试所需的环境准备,以及关联的清理动作。

三、断言方法

四、测试用例的组织

1、unittest中的TestLoader类提供的discover()方法可以从多个文件中查找测试用例

2、找到指定目录及其子目录下的所有测试模块,只有匹配的文件名才能被加载,如果启动的不是顶层目录,那么顶层目录必须单独指定

discover(start_dir,pattern=’ test*.py’ ,top_level_dir=None)

3、start_dir:待测试的模块名或测试用例目录
4、pattern= 'test*.py’:测试用例文件名的匹配原则
5、top_level_dir:测试模块的顶层目录,如果没有顶层目录,则默认为None

五、测试用例的执行顺序

多个目录>多个测试文件>多个测试类>多个测试方法

执行多级目录的测试用例

unittest默认按照ASCII码的顺序加载测试用例(字母与数字顺序为0-9,A-Z,a-z)

执行多级子目录下放一个__init__.py文件,该文件的作用是将一个目录标记一个标准python模块 

import unittest

test_dir = './test_case'

suite=unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite)

六、跳过测试和预期失败

七、数据驱动应用

安装方式

pip install parameterized

使用方式

通过@parameterized.expand()去装饰测试用例,expand中的每个元组都被认为是一条测试用例,元组中的数据就为测试用例变化的值

 

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

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

相关文章

【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知

一、数据传输 1.1 APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的,这里涉及Linux系统中的MMU(内存管理单元)。在驱动程序中通过这两个函数来获得APP和传给APP数据: copy_to_usercopy_from_user …

MySQL之深入InnoDB存储引擎——Undo页

文章目录 一、UNDO日志格式1、INSERT操作对应的UNDO日志2、DELETE操作对应的undo日志3、UPDATE操作对应的undo日志1)不更新主键2)更新主键的操作 3、增删改操作对二级索引的影响 二、UNDO页三、UNDO页面链表四、undo日志具体写入过程五、回滚段1、回滚段…

Java课题笔记~ Servlet编程

1.Servlet编程基础 (1)什么是Servlet Servlet是基于Java语言的Web编程技术,部署在服务器端的Web容器里,获取客户端的访问请求,并根据请求生成响应信息返回给客户端。 创建Servlet的方式,有 如下图:一般创建Servlet都…

Vue3 表单输入绑定简单应用

去官网学习→表单输入绑定 | Vue.js 运行示例&#xff1a; 代码&#xff1a;HelloWorld.vue <template><div class"hello"><h1>Vue 表单输入绑定</h1><input type"text" placeholder"输入框" v-model"msg"…

Open_PN笔记

>>>仅用作学习用途 1.准备好需要用到的工具 官网下载地址&#xff1a; openvpn 客户端下载地址&#xff1a; https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.5-I601.exe EasyRSA下载地址&#xff1a; https://githu…

4、Rocketmq之存储原理

CommitLog ~ MappedFileQueue ~ MappedFile集合

web-初始前端

不区分大小写&#xff0c;单双引号&#xff0c; <html><head><title>初识HTML</title></head><body><h1>Hello world!</h1><img src OIF-C.jfif/></body> </html> <!-- 文件格式 --> <!DOCTYPE h…

PoseFormer:基于视频的2D-to-3D单人姿态估计

3D Human Pose Estimation with Spatial and Temporal Transformers论文解析 摘要1. 简介2. Related Works2.1 2D-to-3D Lifting HPE2.2 GNNs in 3D HPE2.3 Vision Transformers 3. Method3.1 Temporal Transformer Baseline3.2 PoseFormer: Spatial-Temporal TransformerSpati…

人文景区有必要做VR云游吗?如何满足游客出行需求?

VR云游在旅游行业中的应用正在快速增长&#xff0c;为游客带来沉浸式体验的同时&#xff0c;也为文旅景区提供了新的营销方式。很多人说VR全景展示是虚假的&#xff0c;比不上真实的景区触感&#xff0c;人文景区真的有必要做VR云游吗&#xff1f;我的答案是很有必要。 如果你认…

【vue3+pinia+Cookie】实现token登录及数据持久化

vue2后台登录项目,目前接触到的基本上都是vuex+本地存储或vuex+cookie或vuex+专门用于持久化vuex的库,如:vuex-persistedstate vuex默认情况下是在客户端内存中保存应用程序的状态,当页面刷新的时候,内存中的数据会丢失,导致vuex中的数据也会丢失。因为vuex的状态存储是临…

linux-删除KVM虚拟机

1.查看主机 #virsh list 2.关闭主机 #virsh shutdown 虚拟机名称 3.删除主机定义 #virsh undefine 虚拟机名称 4.删除KVM虚拟机文件 #find / -name 虚拟机名称 #rm -rf 虚拟机文件

Windows11安装Linux子系统,并实现服务自启动,局域网访问,磁盘挂载

Windows11安装Linux子系统&#xff0c;并实现服务自启动&#xff0c;局域网访问&#xff0c;磁盘挂载 一、准备工作二、安装Linux子系统(wsl2)三、为Linux子系统设置桥接网络检查wsl版本在 Hyper-V 管理器中创建虚拟交换机创建 WSL 配置文件启动wsl 四、设置Windows开机自启动L…

【考研复习】24王道数据结构课后习题代码|第3章栈与队列

文章目录 3.1 栈3.2 队列3.3 栈和队列的应用 3.1 栈 int symmetry(linklist L,int n){char s[n/2];lnode *pL->next;int i;for(i0;i<n/2;i){s[i]p->data;pp->next;}i--;if(n%21) pp->next;while(p&&s[i]p->data){i--;pp->next;}if(i-1) return 1;…

openssl安装问题合辑

1.openssl拖累nginx编译失败 问题描述&#xff1a; 因为漏洞原因&#xff0c;升级openssl之后需要重新编译nginx&#xff0c;进行了以下步骤&#xff1a; config没问题&#xff0c;但是make一直报错 初步判断是openssl安装有问题&#xff0c;原因不明&#xff0c;重装了opens…

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自&#xff1a;https://zhuanlan.zhihu.com/p/630981648 如有侵权&#xff0c;请联系删除 big.L…

Codeforces Round 889 (Div. 2)C题题解

文章目录 [Dual (Hard Version)](https://codeforces.com/contest/1855/problem/C2)问题建模问题分析1.按元素值分类讨论&#xff0c;正负不同时存在时2.若正负同时存在时代码 Dual (Hard Version) 问题建模 给定n个数&#xff0c;n不超过20&#xff0c;且每个数ai&#xff0c…

MachineLearningWu_14/P65-P69_Multiclass

x.1 Multiclass多分类问题 对于分类问题&#xff0c;往往指的是二分类问题&#xff0c;而对于二分类的decision boundary较为简单&#xff0c;而实际生活中会有很多问题是多分类问题&#xff0c;例如MNIST手写数字识别&#xff0c; 从特征空间上来看&#xff0c;二分类和多分类…

【C++】开源:ncurses终端TUI文本界面库

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ncurses终端文本界面库。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

OpenCV基础知识4 — 绘制图形

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Opencv提供了许多用于绘制图形的方法&#xff0c;包括绘制线段的line()方法、绘制矩形的retangle()方法、绘制圆形的circle()方法、绘制多边形的polylines()方法和绘制文字的putText()方法。本节课将依次对上述各个方法进行…