
在api测试自动化中,经常需要从复杂的json响应中提取特定数据。postman提供了强大的脚本能力,允许用户通过javascript处理响应数据。本节将指导您如何遍历一个json数组,并根据数组中元素的特定属性(例如布尔值)来决定是否将其某个字段存储为postman全局变量。
假设您从一个API端点获取到以下JSON响应,其中包含一个users数组,每个用户对象都有一个id和一个isRetail布尔属性。您的目标是遍历这个users数组:如果isRetail为true,则将其id存储到名为UserId的全局变量中;如果isRetail为false,则将其id存储到名为orgUserId的全局变量中。
{
"status": 200,
"data": {
"users": [
{
"id": 95,
"isRetail": true
},
{
"id": 118,
"isRetail": false
}
],
"pagination": {
"pageNumber": 1,
"pageSize": 25,
"totalCount": 2,
"totalPages": 1,
"isFirst": true,
"isLast": true,
"totalCountOnPage": 2
}
}
}在实现上述逻辑时,初学者可能会遇到一些常见的脚本错误,导致代码无法正常运行,例如 TypeError: Cannot read properties of undefined (reading 'isRetail')。这通常是由于循环边界条件不正确或数据类型比较不准确造成的。
以下是修正后的Postman测试脚本,它解决了这些常见问题:
// 解析API响应为JSON对象
const responseJson = pm.response.json();
// 确保响应中存在data.users数组
if (responseJson && responseJson.data && Array.isArray(responseJson.data.users)) {
const usersArray = responseJson.data.users;
const usersLength = usersArray.length;
// 遍历users数组
for (let i = 0; i < usersLength; i++) {
const currentUser = usersArray[i]; // 获取当前用户对象
// 确保当前用户对象和isRetail属性存在
if (currentUser && typeof currentUser.isRetail === 'boolean') {
const isRetailUser = currentUser.isRetail;
// 根据isRetail的布尔值设置全局变量
if (isRetailUser === true) {
pm.globals.set("UserId", currentUser.id);
console.log(`设置全局变量 UserId 为: ${currentUser.id}`);
} else if (isRetailUser === false) {
pm.globals.set("orgUserId", currentUser.id);
console.log(`设置全局变量 orgUserId 为: ${currentUser.id}`);
}
} else {
console.warn(`跳过无效的用户对象或isRetail属性在索引 ${i} 处缺失.`);
}
}
} else {
console.error("API响应中缺少预期的 'data.users' 数组或其格式不正确.");
}循环边界条件修正:for (let i = 0; i < usersLength; i++)
数据类型精确比较:if (isRetailUser === true) 和 else if (isRetailUser === false)
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
变量声明规范:使用 const 和 let
健壮性增强:空值和类型检查
通过遵循这些指导原则和最佳实践,您可以在Postman中编写出高效、准确且健壮的脚本,以自动化您的API测试流程。
以上就是Postman脚本:迭代JSON响应并根据条件动态设置全局变量的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号