当前位置: 首页 > news >正文

pytest 接口串联场景

 

在编写接口测试时,如果有多个接口需要串联在一起调用,并且这些接口共同构成了一个业务场景,通常可以使用以下几种方法来组织代码,使其更具可读性和维护性。以下是一些规范的建议:

1. 使用 pytest 的 fixture 来管理接口依赖

pytest 的 fixture 非常适合管理测试中的依赖关系。你可以为每个接口调用创建一个 fixture,然后将这些 fixture 串联起来。

2. 使用函数或类来组织接口调用

为了使代码更具可读性和可维护性,可以将每个接口的调用封装到函数中,并在测试用例中按顺序调用这些函数。

#!/usr/bin/env python
import pytest
from src.utils.request_util import post
from logs.test import api_log# 假设有10个接口,我们分别为每个接口定义一个调用函数def login():url = 'login'data = {'username': '139ccc990002','password': '123cc6'}res = post(url=url, data=data, info=False)api_log(info=res, level="INFO")assert res.status_code == 200, f"Login failed with status code {res.status_code}"return res.json()def get_user_info(token):url = 'getUserInfo'headers = {'Authorization': f'Bearer {token}'}res = post(url=url, headers=headers, info=False)api_log(info=res, level="INFO")assert res.status_code == 200, f"Get user info failed with status code {res.status_code}"return res.json()def update_user_info(token, new_data):url = 'updateUserInfo'headers = {'Authorization': f'Bearer {token}'}res = post(url=url, headers=headers, data=new_data, info=False)api_log(info=res, level="INFO")assert res.status_code == 200, f"Update user info failed with status code {res.status_code}"return res.json()# 其他接口函数...# 场景测试:假设场景是登录 -> 获取用户信息 -> 更新用户信息
def test_scenario():# Step 1: 登录获取 tokentoken_info = login()token = token_info.get('token')# Step 2: 使用 token 获取用户信息user_info = get_user_info(token)user_id = user_info.get('user_id')# Step 3: 更新用户信息new_data = {'user_id': user_id,'new_field': 'new_value'}update_result = update_user_info(token, new_data)# 断言更新成功assert update_result.get('success'), "Update user info failed"# 如果需要在多个场景中共享某些数据,可以使用 pytest fixture
@pytest.fixture
def token():# 登录获取 tokenreturn login().get('token')def test_get_user_info(token):# 使用 fixture 提供的 token 获取用户信息user_info = get_user_info(token)assert user_info.get('user_id'), "User ID not found"# 其他测试用例...if __name__ == '__main__':pytest.main(['test_login.py'])

相关文章:

pytest 接口串联场景

在编写接口测试时,如果有多个接口需要串联在一起调用,并且这些接口共同构成了一个业务场景,通常可以使用以下几种方法来组织代码,使其更具可读性和维护性。以下是一些规范的建议: 1. 使用 pytest 的 fixture 来管理接…...

Springboot项目搭建(2)-用户详细信息查询

1. 提要信息 1.1 java四类八种 在Java中,四类指的是Java中的基本数据类型和引用数据类型: 基本数据类型:Java提供了八种基本数据类型,包括整数型、浮点型、字符型和布尔型。引用数据类型:指向对象的引用&#xff0c…...

Stable Diffusion的加噪和去噪详解

SD模型原理: Stable Diffusion概要讲解Stable diffusion详细讲解Stable Diffusion的加噪和去噪详解Diffusion ModelStable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——CLIP Text EncoderStable Diffusion核心网络结构——U-NetStable Diffusion中…...

解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题

在 SDK 开发过程中,使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时,你可能会使用 apply plugin: maven 来发布到本地或远程的 Maven 仓库。但是,随着 Gradle 版本的更新,特别是从 Gradle 7 版本开始&…...

EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!

EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心! 目录 EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心!效果一览基本介绍程序设计参…...

前端 px、rpx、em、rem、vh、vw计量单位的区别

目录 一、px 二、rpx 三、em 四、rem 五、vh和vw 六、rpx 和 px之间的区别 七、px 与 rem 的区别 一、px px(像素): 1、相对单位,代表屏幕上的一个基本单位,逻辑像素。 2、不会根据屏幕尺寸或分辨率自动调整大…...

OceanBase数据库产品与工具介绍

OceanBase:蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase? OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。它具有以下核心特点: 数据强一致性:在分布式架构下确保数据强…...

学习threejs,对模型多个动画切换展示

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.AnimationMixer 动画…...

【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:本文面向的人群 二:错误场景引入 三:正确场景引入 四&#xf…...

Python爬虫:如何从1688阿里巴巴获取公司信息

在当今的数字化时代,数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说,能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一,拥有海量的企业档案和产品信息。本文将介绍如何…...

单片机学习笔记 2. LED灯闪烁

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯 目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理:需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软…...

折叠光腔衰荡高反射率测量技术的matlab模拟理论分析

折叠光腔衰荡高反射率测量技术的matlab模拟理论分析 1. 前言2. 光腔模型3. 光腔衰荡过程4. 衰荡时间与反射率的关系5. 测量步骤①. 光腔调节:②. 光腔衰荡测量:③. 计算衰荡时间常数:④. 反射率计算: 6. 实际应用中的调整7. 技术优…...

ubuntu 16.04 中 VS2019 跨平台开发环境配置

su 是 “switch user” 的缩写,表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写,意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写,Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…...

C语言第13节:指针(3)

1. 回调函数 回调函数的基本思想是,将函数指针作为参数传递给另一个函数,并在需要时通过这个函数指针调用对应的函数。这种方式允许一个函数对执行的内容进行控制,而不需要知道具体的实现细节。 回调函数在以下场景中尤为有用: …...

java:简单小练习,面积

面积:圆和长方形 接口:实现面积 test:调用 一、interface: 对于接口,它是Java中一个新增的知识点,而C中没有,因为Java有一个缺陷就是不可以实现多继承,只可以单继承,这就限制了有些功能的使…...

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)

1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…...

PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)

PostgreSQL提取JSON格式的数据&#xff08;包含提取list指定索引数据&#xff09; ->>, ->, #>, #>> 在PostgreSQL中&#xff0c;处理json或jsonb类型数据时&#xff0c;->>, ->, #> 和 #>> 是非常有用的操作符&#xff0c;它们允许你以…...

如何利用谷歌浏览器提高网络安全

在当今数字化时代&#xff0c;网络安全已成为我们不可忽视的重要议题。作为全球最受欢迎的网络浏览器之一&#xff0c;谷歌浏览器不仅提供了快速、便捷的浏览体验&#xff0c;还内置了多种安全功能来保护用户的在线安全。本文将详细介绍如何通过谷歌浏览器提高您的网络安全&…...

go-zero(四) 错误处理(统一响应信息)

go-zero 错误处理&#xff08;统一响应信息&#xff09; 在实现注册逻辑时&#xff0c;尝试重复注册可能会返回 400 状态码&#xff0c;显然不符合正常设计思维。我们希望状态码为 200&#xff0c;并在响应中返回错误信息。 一、使用第三方库 1.下载库 目前 go-zero官方的…...

1.1 爬虫的一些知识(大模型提供语料)

1.1 爬虫的一些知识&#xff08;大模型提供语料&#xff09; 网页资源&#xff1a; 资源组织方式&#xff1a;列表分页,搜索引擎&#xff0c;推荐 发送请求的文档类型&#xff1a;html ,js 响应请求的文档类型&#xff1a;html,js,json 请求方式&#xff1a;同步和异步 页面形式…...

Linux开发工具:Vim 与 gcc,打造高效编程的魔法双剑

文章目录 一、初识Vim模式 二、vim基本操作2.1基础操作2.2命令模式/正常模式2.2.1光标定位2.2.2复制粘贴、删除2.2.3撤销2.2.4替换字符2.2.5替换模式 2.3底行模式2.3.1退出vim和**保存文件**2.3.2定位文本字符串2.3.3命令2.3.4实现分屏2.3.5替换指定字符串 2.4补充指令2.4.1视图…...

cesium for unity的使用

先聊聊导入 看到这里的因该能够知道&#xff0c;官网以及网上绝大多数的方法都导入不进来&#xff0c;那么解决方法如下: 两个链接&#xff1a;按照顺序依次下载这两个tgz和zip&#xff0c;其中tgz为主要部分&#xff0c;zip为示例工程项目 如果您要查看示例工程项目的话&am…...

Android AOSP 架构和各层次开发内容介绍

一、系统架构总况​​​​ 官方文档:架构概览 | Android Open Source Project (google.cn)https://source.android.google.cn/docs/core/architecture?hl=zh-cn 下面是Google Android 提供的最新架构层次图: 图. AOSP 的软件堆栈层次 System API 表示仅供合作伙伴和 OEM…...

Kafka 到 Kafka 数据同步

简述 Kafka 为处理实时数据提供了一个统一、高吞吐、低延迟的平台&#xff0c;其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”&#xff0c;这使它作为企业级基础设施来处理流式数据非常有价值。因此实现 Kafka 到 Kafka 的数据同步也成了一项重要…...

华为刷题笔记--题目索引

文章目录 更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记简单题目 更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分&#xff1a; 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新&#xff0c;订阅防丢失 简单题目 –题目分值试卷1华为OD机…...

osgEarth加载倾斜摄影测量数据

一、代码 // .cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <osgViewer/Viewer> #include <osgEarth/Notify> #include <osgEarth/EarthManipulator>...

消息推送问题梳理-团队管理

管理用户界面&#xff1a; 新增加用户列表&#xff1a;这些用有资格收到推送消户息 当删除一个医生的时候&#xff0c;重新添加这个人的时候 发现团队中没有这个人了 &#xff0c;这个时候 需要重新添加这个人。 处理这个问题遵循的原则&#xff1a; 删除这个用户的时候&…...

如何在 Ubuntu 上使用 Docker 部署 LibreOffice Online

简介 LibreOffice Online&#xff08;也称为Collabora Online&#xff09;是一个开源的在线办公套件&#xff0c;它提供了与LibreOffice桌面版相似的功能&#xff0c;但完全在云端运行。这意味着用户可以通过浏览器访问和编辑文档&#xff0c;而无需在本地计算机上安装任何软件…...

MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)

一、工具准备 对MongoDB进行导入导出、备份恢复等操作时需要用到命令工具&#xff0c;我们要先检查一下MongoDB安装目录下是否有这些工具&#xff0c;正常情况下是没有的:)&#xff0c;因为新版本的MongoDB安装时不包含这些工具&#xff0c;需要我们手动下载安装。下载成功之后…...

代码随想录第三十一天| 56. 合并区间 738.单调递增的数字

56. 合并区间 题目描述 给定一个区间的集合 intervals&#xff0c;请合并所有重叠的区间。 解题思路 排序区间 按照每个区间的起点 start 升序排序&#xff0c;便于后续合并。 合并区间 使用两个变量 start 和 right 分别记录当前区间的起点和终点。遍历排序后的区间&#x…...

做网站+利润/百度推广关键词排名规则

在控件的KeyPress事件中编写如下代码&#xff1a; if (e.KeyChar (char)13) {e.Handled true;SendKeys.Send("{TAB}"); }转载于:https://www.cnblogs.com/swtseaman/archive/2011/05/05/2037184.html...

tornado 做网站/中国站长之家网站

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;法国财政部长Bruno Le Maire表示&#xff0c;区块链技术是其政府的优先事项。 Le Maire在4月16日至17日举行的巴黎区块链周峰会之前接受法国经济和商业杂志“资本报”采访时发表了上述言论。作者&#xff1a;Mari…...

模块网站建设/石家庄网站优化

上周终于买到Windows Phone 7真机&#xff0c;近期将注册App Hub测试曾经写过的WP7项目&#xff0c;希望不久以后能和大家一起分享Windows Phone 7开发经验。 本周Silverlight学习资源更新&#xff1a;Silverlight中使用MVVM&#xff08;5&#xff09;&#xff1a;Command IIRi…...

做网站还有用/软文代写网

即abc输出abc,acb,bac,bca,cab,cba 思路:先以非递归方式,完成部分 public static void Rotate(char[] str) {var length str.Length;int i 1;for (int j 0; j < length; j){foreach (var item in str){Console.Write(item);}Console.WriteLine();char temp str[0];//mov…...

合肥网站建设新闻营销/长沙seo优化排名

前段时间 , 在脉脉上看见某95后阿里P7晒出工资单&#xff0c;是真的给我酸了…… 没办法回去想想 , 还是说狠补一下技术吧。 按照之前的经验来看 , Java 一面基本上都是基础题&#xff0c;同样是 CURD 的话&#xff0c;谁更熟练要谁&#xff0c;比如下面这个Java面试手册&…...

怎么访问被禁止的网站/青岛seo网站建设公司

用于接收父组件传入的参数 简易版——数组的方式定义 props: [size, myMessage] 详细版——对象的方式定义 props: {// 限定参数的数据类型必须为字符串code: String, // 限定参数的类型为字符串型&#xff0c;或数值型 Numberparams2: [String, Number],name:{type:String…...