pytest 单元测试前后置处理
文章目录
- 方法1 setup/teardown
- 方法2 fixture 夹具
- 方法3 conftest.py
测试用例执行前后的一些处理动作,也叫夹具。以下介绍使用前后置操作的几种方法。
方法1 setup/teardown
setup,每个测试用例执行前要进行的处理。
teardown,每个测试用例执行结束后要进行的处理。
import pytestclass TestMyProject:def setup(self):print("每个测试用例执行前的初始化")def test_001(self):print("测试用例1")def test_002(self):print("测试用例2")def teardown(self):print("每个测试用例执行结束后的收尾")
setup_class/teardown_class
每个测试类初始化前后的操作,如创建日志对象,连接数据库等操作。
class TestMyProject:def setup_class(self):# 如连接数据库print("测试类初始化前的操作")def setup(self):print("每个测试用例执行前的初始化")def test_001(self):print("测试用例1")def test_002(self):print("测试用例2")def teardown(self):print("每个测试用例执行结束后的收尾")def teardown_class(self):# 如关闭数据库print("测试类执行后的操作")
方法2 fixture 夹具
实现全部或者部分测试用例的前后置处理。
结构及参数
:
# scope 被标记方法的作用域(函数、类、模块、包)
# params 被标记方法的参数化
# autouse 是否自动使用
# name 别名
@pytest.fixture(scope, params, autouse, ids, name)
def my_func():print("前置操作")# yield分割前后置操作yieldprint("后置操作")
autouse=False
:
非自动使用时,要将my_func传入指定的测试用例(谁需要传给谁);
自动使用且scope="function"时, 将my_func前后置操作用于所有的测试用例。
scope="class"时(autouse=True),每个测试类执行前后置操作。
scope="module"时(autouse=True),每个模块中,执行一次前后置操作。
# 定义夹具操作
@pytest.fixture(scope="function", autouse=False, name="别名")
def my_func():print("前置操作")# yield分割前后置操作yieldprint("后置操作")class TestMyProject:def test_001(self, my_func): # 仅001测试用例有前后置操作,非自动使用要传入print("测试用例1")def test_002(self):# 没有前后置操作print("测试用例2")
params
参数使用:
可以给被fixture装饰的函数传入参数。
类型为list/tuple、字典组成的列表&元组
import pytest
import timeparams = [{"name": "jack","age": 23}, {"name": "lucy","age": 18}]# 夹具操作
# ids 设置每个参数的变量名
@pytest.fixture(scope="function", params=params, ids=["dict_1", "dict_2"], autouse=False, name="func_lauf")
def func(request): # 参数必须使用request且调用param属性拿到参数值print("前置操作...")yield request.param # 抛出值后执行外部函数体;外部执行结束再执行yield后面的部分print("前置操作...")class TestWebClass:# 部分测试用例使用夹具,传入函数的返回值# 变量必须与函数别名相同(无别名则用函数名)def test_001(self, func_lauf): # func_lauf 为夹具别名,执行时传入夹具的返回值print("test 001 成功")print("********** 夹具返回值:", func_lauf)def test_002(self):time.sleep(3)assert 1 == 1
方法3 conftest.py
- conftest.py需要结合fixture一起使用,将fixture装饰的函数放入该模块,实现全局的使用;
- conftest.py放入测试用例的同级目录;
- 当前包的子包可以使用当前包的conftest.py;
- 测试用例优先查找本包的conftest.py;
- 测试用例使用时,直接传入夹具即可,不需要导入;
例子:
相关文章:
pytest 单元测试前后置处理
文章目录方法1 setup/teardown方法2 fixture 夹具方法3 conftest.py测试用例执行前后的一些处理动作,也叫夹具。以下介绍使用前后置操作的几种方法。方法1 setup/teardown setup,每个测试用例执行前要进行的处理。 teardown,每个测试用例执行…...
汽车安全硬件扩展 AUTOSAR SHE SecureHardwareExtensions
SHE(Secure Hardware Extension)在车联网中,被应用在车端ECU中负责安全存储与安全计算。是由HIS(由Audi、BMW、Porsche、Volkswagen组成)制定的标准,中文意思“安全硬件扩展”,是对任何给定微控…...
2023年美国大学生数学建模C题:预测Wordle结果建模详解+模型代码
目录 前言 一、题目理解 背景 解析 字段含义: 建模要求 二、建模思路 灰色预测: 编辑 二次指数平滑法: person相关性 只希望各位以后遇到建模比赛可以艾特认识一下我,我可以提供免费的思路和部分源码,以后…...
5、HAL库驱动W25Qxx
一、 SPI通信驱动W25Qxx 1、使用驱动文件快速配置工程代码驱动W25Qxx (此驱动文件只适合W25Qxx 16M及以下型号,因为访问地址位数不同) 注:本次使用SPI的方式进行访问W25Qxx Flash进行数据读写,关于W25Qxx芯片不会做…...
git rebase 洐合(变基)
洐合 把一个分支整合到另一个分支的办法有两种:merge(合并) 和 rebase(衍合) 为什么使用? 使提交记录更简洁 三种情况 第一种: 合并多条commit记录 git rebase -i HEAD~合并数量 HEAD~3&a…...
Kubernetes 1.18学习笔记
文章目录一、Kubernetes 概述和架构1、kubernetes 基本介绍2、Kubernetes 功能3、Kubernetes 架构组件4、Kubernetes 核心概念5、Kubernetes 工作原理二、Kubernetes 集群搭建1、系统环境准备1.1 安装要求1.2 系统初始化2、客户端工具kubeadm搭建2.1 安装步骤2.2 安装组件2.3 集…...
AJAX技术
AJAX技术 浏览器是多进程的,简单的说就是,浏览器每打开一个标签页,就相当于创建了一个独立的浏览器进程。但是js是基于单线程的,而这个线程就是浏览器的js引擎,浏览器无论在什么时候都只且只有一个线程在运行JavaScri…...
华为OD机试 - 最大排列(JS)
最大排列 题目 给定一组整数,重排序后输出一个最大的整数 输入 数字组合 输出 最大的整数 示例一 输入 10 9输出 910解题思路 我们可以读入一个字符串,将字符串中的单词按照每个单词的字典序长度,字典序从大到小的顺序排序&#x…...
Prometheus Docker安装及监控自身
前提环境: Docker环境 涉及参考文档: 安装Prometheus开始 Prometheusnode_exporter Agent组件 一、部署Prometheus 1、启动容器将文件拷贝出来 docker run -d prom/prometheus2、容器将文件拷贝出来 docker cp 容器ID:/usr/share/prometheus/conso…...
点云处理PCL常用函数与工具
点云处理PCL常用函数与工具 文章目录点云处理PCL常用函数与工具前言一、点云读取与保存数据读取数据保存自定义的点云保存格式二、点云显示点云显示-根据颜色点云显示-根据指定轴数值点云显示-根据指定信息显示多组点云显示三、点云滤波直通滤波统计滤波均匀下采样滤波VoxelGri…...
FyListen 在 MVP 架构中的内存优化表现
FyListen 在 MVP 中的内存优化表现 本文只是分享个人开源框架的内存优化测试,你可以直接跳到最后,参考内存泄漏的分析过程! 项目地址: https://github.com/StudyNoteOfTu/fylisten2-alpha1 由于使用到 AOP,所以直接…...
Qt代码单元测试以及报告生成
简介 单元测试是所有测试中最底层的一类测试,是第一个环节,也是最重要的一个环节,是唯一一次有保证能够代码覆盖率达到100%的测试,是整个软件测试过程的基础和前提,单元测试防止了开发的后期因bug过多而失控࿰…...
vscode构建Vue3.0项目(vite,vue-cli)
构建Vue3.0项目构建Vue3.0项目1.使用Vite构建vue项目的方法以及步骤1. 安装vite2. 运行vite vue 项目3.说明2.使用vue-cli构建vue项目的方法以及步骤1.安装全局vue cli —— 脚手架2、VSCode3.报错4.运行构建Vue3.0项目 1.使用Vite构建vue项目的方法以及步骤 1. 安装vite n…...
【2023】华为OD机试真题Java-题目0215-优雅数组
优雅数组 题目描述 如果一个数组中出现次数最多的元素出现大于等于 k k k 次,被称为k-优雅数组, k k k 也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次...
通过Prowork每日自动提醒待处理工作任务
对于中小团队来说,由于不需要繁琐的流程和高频的异地沟通,需要一款更适合中小团队的日程和项目管理工具。而Prowork就是这样一款敏捷高效的协同平台。Prowork与以往各种项目管理⼯具最⼤的不同在于,其弱化流程和弱化权限的特性,不…...
Linux自定义系统服务
文章目录一. Linux系统服务二. 自定义系统服务一. Linux系统服务 Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务,CentOS 7.x开始,CentOS开始使用 systemd服务来代替 daemon ,原来…...
mongodb lambda 查询插件
需求背景需要一个像mybatis plus 一样的基于lambda, 且面向对象的查询mongo数据的插件。在网上找了很久,没有发现有类似功能的插件。于是自己手写了一个,借助mongoTemplate屏蔽了底层查询语句的实现细节。在此基础上,实现了查询的统一封装。技…...
C++设计模式(16)——责任链模式
亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility 意图 责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理…...
springmvc+jsp电影院购票售票选座推荐网站java ssm
本电影购票推荐网站以SSM作为框架,B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:个人中心、用户管理、电影信息管理、电影类型管理、影院信息管理、系统管理、订单管理等模块,通过这些模块的实现能够基本满足日常电影购…...
ASEMI高压MOS管4N65SE,4N65SE参数,4N65SE特征
编辑-Z ASEMI高压MOS管4N65SE参数: 型号:4N65SE 漏极-源极电压(VDS):650V 栅源电压(VGS):30V 漏极电流(ID):4A 功耗(PD…...
第46章 自定义静态与数据库动态授权依赖注入的定义实现
1 数据库动态授权表授权原理 2 准备工作 2.1 重构Program.cs using Framework.Infrastructure.Extensions; var builder WebApplication.CreateBuilder(args); //如果启动项中不存在“appsettings.json”文件,则通过.Net(Core)的内置方法自动新建“appsettings.…...
Go语言面试题
请解释 Go 语言中的 goroutine 是什么。请解释 Go 语言中的 channel 是什么,并举例说明它的用途。请解释 Go 语言中的 interface 是什么,并举例说明它的用途。请解释 Go 语言中的 map 和 slice 是什么,并举例说明它们的用途。请解释 Go 语言中…...
Kubernetes入门级教程
Kubernetes入门级教程1. Introduction1.1 概述1.2 关键字介绍2. Cluster Install2.1 Big Data -- Postgres3. 基础知识3.1 Pod3.2 控制器3.3 通讯模式3.4 服务发现4. Command4.0 编辑文件4.1 在宿主机执行命令4.2 创建资源对象4.3 查询资源对象4.4 查询资源描述4.5 修改资源4.6…...
15个顶级思维模型
今天给大家分享几个思维模型,无论是数分、数开还是其他岗位,都会有所启发。 查理芒格认为,每个学科都是从一个独特的角度去切入了解这个世界,都是一个摸象的瞎子。 要超越普通人的认知决策,就必须掌握多个核心思维模…...
外贸谷歌优化,外贸google SEO优化费用是多少?
本文主要分享关于做外贸网站的谷歌seo成本到底需要投入多少这一件事。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 那么外贸google SEO优化费用是多少? 答案是:2w~25w。 好,看到这个答案先别激…...
华为OD机试 - 统计匹配的二元组个数(Python) | 机试题算法思路
最近更新的博客 华为OD机试 - 招聘(Python) | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 热点网络统计 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 路灯照明 | 备考思路,刷题要点,答疑 【新解…...
Java 日志简介
目录1、Slf4j2、Log4j3、LogBack4、Logback 优点5、ELK1、Slf4j slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则…...
HTTPS协议原理---详解六个加密方案
目录 一、HTTPS 1.加密与解密 2.我们为什么要加密? 3.常见加密方式 ①对称加密 ②非对称加密 4.数据摘要 5.数字签名 二、HTTPS的加密方案 1.只是用对称加密 2.只使用非对称加密 3.双方都使用非对称加密 4.非对称加密+对称加密 中间人攻…...
纯css实现坤坤经典动作-“铁山靠”
背景 2023年2月16日,晴,今天没有工作,一直在掘金摸鱼,摸的我好累。 不行!我得找点有意义的事情做! 此时间,我发的一条沸点竟然有小黑子给我评论,\ 我看到之后气不打一处来ÿ…...
Linux 操作系统原理 — NUMA 体系结构
目录 文章目录 目录NUMA 体系结构NUMA 的基本概念查看 Host 的 NUMA TopologyBash 脚本DPDK 脚步NUMA 体系结构 NUMA(Non-Uniform Memory Access,非一致性存储器访问)的设计理念是将 CPU 和 Main Memory 进行分区自治(Local NUMA node),又可以跨区合作(Remote NUMA nod…...
网站 app开发 财务做帐/seo一个关键词多少钱
len 获取容器类型的元素个数, 或者说获取容器的长度 str1 123 list1 [1, 2, 3] tuple1 (1, 2, 3) set1 {1, 2, 3} dict1 {name: 123, age: 18} 使用len可以获取list str tuple set中的元素个数 print(len(str1)) print(len(list1)) print(len(tuple1)) print(len(set1)…...
建设电子商务网站的预期收益/手机免费建站系统
2019独角兽企业重金招聘Python工程师标准>>> 日期转换帮助类 博客分类: java /*** 转换微博时间的工具类* * * */ public class ConvertDateUtil {/*** 转换字符类型的时间为日期* * param time* 1. 60分钟前 * 2. 今天 13:05 *…...
广州越秀番禺最新通告/浙江seo推广
一、用户输入验证1、手工编程验证动作类中的所有方法进行验证:步骤:a、动作类继承ActionSupportb、覆盖调用public void validate()方法c、在validate方法中,编写不符合要求的代码判断,并调用父类的addFieldError(String fieldNam…...
wordpress app应用/上海网站排名优化
没有学习过红黑树的同学请参考: <<Introduction to Algorithms>> Chapter 13 Red-Black Trees Chapter 14 Augmenting Data Structures 教你透彻了解红黑树 一、红黑树的介绍 先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉…...
余姚建设公司网站/关键字c语言
项目地址 github: https://github.com/Delgan/loguru 文档:https://loguru.readthedocs.io/en/stable/index.html 安装 pip install loguru 1、输出日志 from loguru import logger logger.debug("这是一条debug日志") 终端执行后出现带颜色的日志&am…...
解决方案网站/seo服务外包费用
1. 进入环境,下载附件 先说一下,这个题坑的一比,官方wp都是错的,人麻了 附件是一个压缩包,解压后里面是个txt文件,如图: 2. 问题分析 看起来像是base64之类的编码,尝试解码&#…...