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

通过json传递请求参数,如何处理动态参数和接口依赖

嗨,大家好,我是兰若姐姐,今天给大家讲一下如何通过json传递请求参数,如何处理动态参数和接口依赖

1. 使用配置文件和模板

test_data.json 中,你可以使用一些占位符或模板变量,然后在运行测试之前,通过代码生成具体的请求参数。比如:

test_data.json:

{"Aapi": {"param1": "value1","param2": "{Bapi_response_param}"}
}

在测试代码中,使用模板引擎(如 Jinja2)或字符串替换来生成最终的请求数据:

import json
import requestsdef get_data(template_path, context):with open(template_path, 'r') as file:template = file.read()return template.format(**context)# Step 1: Call Bapi
response_b = requests.get('<http://example.com/bapi>')
b_data = response_b.json()# Step 2: Prepare Aapi data using Bapi response
context = {"Bapi_response_param": b_data['desired_param']
}
a_data = get_data('test_data.json', context)# Step 3: Call Aapi
response_a = requests.post('<http://example.com/aapi>', data=json.dumps(a_data))
print(response_a.json())

2. 写脚本处理参数依赖

在复杂情况下,可以直接在测试脚本中处理参数依赖:

import requests# Step 1: Call Bapi and get its response
response_b = requests.get('<http://example.com/bapi>')
b_data = response_b.json()
b_param = b_data['desired_param']# Step 2: Use Bapi response data to prepare Aapi request
a_request_data = {"param1": "value1","param2": b_param
}# Step 3: Call Aapi
response_a = requests.post('<http://example.com/aapi>', json=a_request_data)
print(response_a.json())

3. 使用专用测试管理工具

有些测试框架或工具(例如 Postman, Karate, Robot Framework 等)提供了很好地处理依赖和动态数据的方法。这些工具通常允许你直接在测试步骤中引用变量和依赖的接口返回值。例如,在 Postman 中,你可以在一个请求中设置环境变量,然后在另一个请求中读取这些变量。

4. 封装为公共函数

将这些逻辑封装成公共函数,便于在多个测试用例间复用。例如:

import requestsdef call_bapi():response = requests.get('<http://example.com/bapi>')return response.json()def call_aapi(b_param):data = {"param1": "value1","param2": b_param}response = requests.post('<http://example.com/aapi>', json=data)return response.json()# Usage
b_data = call_bapi()
a_response = call_aapi(b_data['desired_param'])
print(a_response)

5. 使用测试上下文或全局变量

如果测试大量依赖共享的状态,可以使用上下文或全局变量来存储并传递依赖数据。例如:

class TestContext:def __init__(self):self.b_param = Nonecontext = TestContext()# Step 1: Get Bapi response and set context
response_b = requests.get('<http://example.com/bapi>')
context.b_param = response_b.json()['desired_param']# Step 2: Use context in Aapi call
def call_aapi():data = {"param1": "value1","param2": context.b_param}response = requests.post('<http://example.com/aapi>', json=data)return response.json()# Run the test
a_response = call_aapi()
print(a_response)

总结

处理参数依赖和动态数据,需要结合实际情况选择合适的策略。通过使用模板、脚本处理、测试工具或者封装公共函数等方法,可以有效应对这些需求。希望这些方法对你有所帮助!

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

相关文章:

  • [240727] Qt Creator 14 发布 | AMD 推迟 Ryzen 9000芯片发布
  • PLSQL Developer工具查询数据,报错(动态性能表不可访问)
  • 基于 HTML+ECharts 实现智慧交通数据可视化大屏(含源码)
  • 探索 IT 领域的新宠儿:量子计算
  • TSPNet代码分析
  • Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)
  • DC-5靶机通关
  • AI学习记录 -使用react开发一个网页,对接chatgpt接口,附带一些英语的学习prompt
  • MongoDB多数据源配置与切换
  • Mongodb入门介绍
  • docker前端部署
  • 指标体系建设的方法论
  • 乐鑫ESP32-H2设备联网芯片,集成多种安全功能方案,启明云端乐鑫代理商
  • C++调用Java接口
  • C# datetimePicker
  • AI有关的学习和python
  • 前端node.js入门
  • 无需标注的数据集
  • C# 抽象工厂模式
  • java中 两个不同类对象list,属性一样,如何copy
  • 文件上传总结
  • 网页突然被恶意跳转或无法打开?DNS污染怎么解决?
  • Matlab进阶绘图第65期—带分组折线段的柱状图
  • EasyMedia转码rtsp视频流flv格式,hls格式,H5页面播放flv流视频
  • FPGA实验6: 有时钟使能两位十进制计数器的设计
  • C# 委托函数 delegate
  • Vue3响应式高阶用法之`shallowReadonly()`
  • Windows系统安全加固方案:快速上手系统加固指南 (下)
  • 记一次因敏感信息泄露而导致的越权+存储型XSS
  • Java笔试面试题AI答之线程Thread(1)