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

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

1. 使用配置文件和模板

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

test_data.json:

json 复制代码
{
    "Aapi": {
        "param1": "value1",
        "param2": "{Bapi_response_param}"
    }
}

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

python 复制代码
import json
import requests

def 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. 写脚本处理参数依赖

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

python 复制代码
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. 封装为公共函数

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

python 复制代码
import requests

def 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. 使用测试上下文或全局变量

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

python 复制代码
class TestContext:
    def __init__(self):
        self.b_param = None

context = 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)

总结

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

相关推荐
安娜的信息安全说2 分钟前
LangGraph:构建智能工作流的新方式
python·ai·langgraph
代码or搬砖3 分钟前
Collections和Arrays
java·开发语言
吴名氏.14 分钟前
电子书《Java程序设计与应用开发(第3版)》
java·开发语言·java程序设计与应用开发
于慨26 分钟前
dayjs处理时区问题、前端时区问题
开发语言·前端·javascript
爱吃泡芙的小白白34 分钟前
如何在现有配置好环境的Pycharm中安装jupyterlab这个工具
ide·python·pycharm·notebook·虚拟环境·jupyterlab
listhi52036 分钟前
基于MATLAB的LTE系统仿真实现
开发语言·matlab
ss27344 分钟前
ScheduledThreadPoolExecutor异常处理
java·开发语言
ejjdhdjdjdjdjjsl1 小时前
Winform初步认识
开发语言·javascript·ecmascript
六毛的毛1 小时前
比较含退格的字符串
开发语言·python·leetcode
小鸡吃米…1 小时前
机器学习 - Python 库
人工智能·python·机器学习