selenium - 无法从 API 响应中找到重复的元素
问题描述
我们正在测试一个 API,最近遇到了一个问题,一些客户无法登录网站。
我们发现了这个问题,这是因为 API 响应中的重复键,即使 API 包含重复键,它也会给出响应。
所以测试对重复的关键条件没有帮助,所以任何人都可以帮助我或指导我如何找到 API 响应中是否存在重复元素。
工具:邮递员
下面是示例 API 输出,
在下面来自 API 的 JSON 输出中,我们可以找到“operatingSystem”的重复项,就像这个重复的键来自不同的元素。
由于某些原因,有一段时间无法调试API,所以需要找出这些重复的情况。
任何想法或建议将不胜感激。在此先感谢。
JSON
eg: {
"code": 2,
"deviceId": "ID",
"deviceName": "Test",
"platform": "x64",
"operatingSystem": "test",
"operatingSystem": "test",
"gde": 000,
"productVersion": "0.0",
"build": "00000",
"receipt": null
}
我们怎么能处理这样的情况。我们有什么方法可以自动化/测试这种情况吗?
解决方案
这里有一些你可以尝试的东西,虽然它有点复杂。pm.response.json()
将规范化响应并删除任何重复项,即您将无法检测到任何重复项。因此,您可以做的是获取文本中的响应,然后将其处理成一个列表并在那里查找重复项。我使用了一个地图对象,如果地图已经包含给定的键,那么设置一个标志并通过测试。
这没有经过彻底测试,但它应该给你一个想法或至少一个解决问题的起点:
var jsonBody = pm.response.text();
var str = jsonBody.substring(1, jsonBody.length-1);
var keyArr = str.split(",");
var keyMap = {};
var foundDups = false;
for (var i = 0; i < keyArr.length; i++) {
var key = keyArr[i].split(":")[0];
if(!(key in keyMap)) {
keyMap[key] = key;
console.log("added key " + key);
}
else {
console.log("found duplicate: " + key);
foundDups = true;
break;
}
}
pm.test("Look for dups", function() {
pm.expect(foundDups).to.eql(false);
});
推荐阅读
- jenkins - 詹金斯:以间隔运行/排队并发作业
- ios - 用户图标出现在地图标记后面
- assembly - 如何将一个字节加载到 MIPS 中的数组中
- python - 计算矩形面积加一
- javascript - 从另一个组件访问其他组件数据和方法
- google-coral - 第一次启动后无法连接到开发板
- python - 如何使用 def 开始密码验证代码并在 Python 中返回 T/F?
- reactjs - antd Table onRow onClick 到另一个组件
- python - 不同网络上不同机器上的 Python 代码并行化
- snowflake-cloud-data-platform - 查询雪花 s3 外部文件