如何在 JavaScript Postman Runner 中比较两个 URL

How to compare two URLs in JavaScript Postman Runner

我想比较两个 URL:第一个来自响应,第二个来自上传的 CSV 文件。

我想检查响应中的 URL 是否与 CSV 文件中链接到请求行的 URL 相同。

请求正文

{
"brandTrigram": "{{brandTrigram}}",
"countryId": "{{countryId}}",
"languageId": "{{languageId}}"
}

测试

pm.test("Check returned data", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.URL).to.eql(pm.variables.get("URL"));
});

CSV 文件

brandTrigram,countryId,languageId,URL
car,ca,eng,https://ca.cartier.com/en-ca/others/privacy-policy.html
car,ae,ara,https://www.cartier.ae/ar-ae/%D8%BA%D9%8A%D8%B1-%D8%B0%D9%84%D9%83/%D8%B3%D9%8A%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%AE%D8%B5%D9%88%D8%B5%D9%8A%D8%A9.html

我在 CSV 文件的第一次迭代中收到以下错误:

Check returned data | JSONError: Unexpected token 'h' at 1:1 https://ca.cartier.com/en-ca/others/privacy-policy.html ^

所以 javascript 测试没有完成我们想要的比较工作:/,我该如何解决?

如果您的回复正文是:

{
    "URL": "some URL"
}

测试可以是:

pm.test("Check returned data", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.URL).to.eql(pm.iterationData.get("URL"));
});

使用 pm.iterationData.get() 可确保您从该范围获取值,并避免在不同范围内使用该变量名称时出现问题。

我不知道响应主体结构是什么,所以这是基于看到问题 jsonData.URL 的猜测。

编辑

看起来响应是纯文本而不是 JSON 对象,因此使用 pm.response.json()jsonData.URL 是不正确的。

pm.test("Check returned data", function () {
    var response = pm.response.text();
    pm.expect(response).to.include(pm.iterationData.get("URL"));
});