当前位置: 首页 > 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'])

http://www.lryc.cn/news/488318.html

相关文章:

  • Springboot项目搭建(2)-用户详细信息查询
  • Stable Diffusion的加噪和去噪详解
  • 解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题
  • EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
  • 前端 px、rpx、em、rem、vh、vw计量单位的区别
  • OceanBase数据库产品与工具介绍
  • 学习threejs,对模型多个动画切换展示
  • 【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
  • Python爬虫:如何从1688阿里巴巴获取公司信息
  • 单片机学习笔记 2. LED灯闪烁
  • 折叠光腔衰荡高反射率测量技术的matlab模拟理论分析
  • ubuntu 16.04 中 VS2019 跨平台开发环境配置
  • C语言第13节:指针(3)
  • java:简单小练习,面积
  • @Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)
  • PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)
  • 如何利用谷歌浏览器提高网络安全
  • go-zero(四) 错误处理(统一响应信息)
  • 1.1 爬虫的一些知识(大模型提供语料)
  • Linux开发工具:Vim 与 gcc,打造高效编程的魔法双剑
  • cesium for unity的使用
  • Android AOSP 架构和各层次开发内容介绍
  • Kafka 到 Kafka 数据同步
  • 华为刷题笔记--题目索引
  • osgEarth加载倾斜摄影测量数据
  • 消息推送问题梳理-团队管理
  • 如何在 Ubuntu 上使用 Docker 部署 LibreOffice Online
  • MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)
  • 代码随想录第三十一天| 56. 合并区间 738.单调递增的数字
  • C语言基本知识 2.2void 函数