应用场景:试题更新。先获取题目详情,再更新题目的部分字段信息,更新的字段采用csv参数化,不用更新部分直接引用题目详情返回值。
接口A:获取试题详情
功能:查询特定试题的详细信息。
请求方式:GET
请求参数:试题ID
返回值:题目、题目类型、答案、解析、难度、知识点等。
接口B:更新试题信息
功能:根据试题ID更新试题的相关信息。
请求方式:PUT
请求参数:试题ID、年级、题目、题目类型、答案、解析、难度、知识点等。
自动化更新流程
步骤1:准备更新数据
根据业务需求,准备需要更新的试题数据,包括题目id、需要更新的字段等。
在APIFox中配置CSV数据参数化,导入准备好的CSV文件。
将CSV文件中的列映射到接口A接口B的请求参数上,确保每个参数都对应正确的数据。
步骤2:获取试题详情(接口A)
使用APIFox发送GET请求到接口A,获取特定试题的详情,csv参数化试题id 。
步骤3:在接口A后置操作中更新试题信息(接口B)
后置操作配置
提取返回数据:首先,在接口A的测试用例中,确保能够成功获取试题的详细信息,包括题目、题目类型、答案、解析、难度等。
配置后置操作:添加请求接口B的脚本:
// 解析接口A响应数据
let responseJson = pm.response.json();
var course_id =responseJson.data.id;
knowledge_ids =responseJson.data.knowledge_ids;
grade_id =responseJson.data.grade_id;
difficulty_id =responseJson.data.difficulty_id;
type_id =responseJson.data.type_id;
title =responseJson.data.title;
answer =responseJson.data.answer;
analysis =responseJson.data.analysis;
// 获取csv数据
nlsy_id = pm.variables.get("nlsy_id");
nlsy_sy = pm.variables.get("nlsy_sy");
nlsy_nl = pm.variables.get("nlsy_nl");
kcmb = pm.variables.get("kcmb");
// 构建B接口的请求体
const jsonParam = {
"appId": "dctest",
"id": course_id,
"knowledge_ids": knowledge_ids,
"grade_id": grade_id,
"difficulty_id": difficulty_id,
"type_id": type_id,
"title": title,
"answer": answer,
"analysis": analysis,
"nlsy": [
{
"id":nlsy_id,
"sy": nlsy_sy,
"nl": nlsy_nl
}
],
"kcmb": kcmb,
"sign": "xxxxx"
}
// 设置PUT请求
const postRequest = {
url: "http://xxxx/cloud_topic/update",
method:'PUT',
header: {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json',
'Accept': '*/*',
'Host': 'xx.xxx.xxx.x:xxxx',
'Connection': 'keep-alive',
'Cookie': 'PHPSESSID=xxx22b15c741d201bc6xxx'
} ,
body:{
mode:'raw',
raw: JSON.stringify(jsonParam)
}
};
// 发送请求并处理响应
pm.sendRequest(postRequest,function(err,response){
console.log(response.json());
});
如果在执行这段代码时遇到问题,比如网络连接问题或服务器无法响应,那么可能需要检查网络连接、服务器状态以及请求的URL是否正确。此外,确保所有的变量都已正确设置,并且服务器端点能够处理PUT请求等
步骤4:执行用例集
选择用例集合:执行接口A的测试用例,APIFox会自动将接口A中提取的变量填充到接口B请求中,并发送更新请求。
步骤5:验证更新结果
可以在测试报告中查看执行结果确认是否完成请求。
总结
通过APIFox的接口关联和CSV数据参数化功能,我们可以轻松实现试题信息的自动化更新。