我正在使用邮递员编写脚本。
首先,我执行检索oauth 令牌的请求。
然后,在“测试”选项卡中,我使用邮递员脚本来使用收到的令牌来设置全局(邮递员)变量。
此外,我想解码令牌,因为我想使用令牌内的信息将它们设置为变量。令牌有效负载是 base 64 url编码的。
我怎么做?
javascript postman postman-pre-request-script postman-testcase
我断言 array1 中的元素是否存在于 array2 中,下面是数组示例,
var array1 = [
{
"name": "appe",
"loc": "war",
"order": 5,
"neck": "NO",
"end": false
},
{
"name": "con",
"loc": "conve",
"order": 15,
"neck": "NO",
"end": true
}]
var array2 = [{"neck":"NO"
"end":true,
"loc":"conve",
"name":"con",
"order":15
}]
Run Code Online (Sandbox Code Playgroud)
我尝试过的代码 -
const lodash = require("lodash");
for(var i = 0; i < array2.length; i++ )
{
tests['response json contain Data'] = lodash._.has(points, array2[i]);
//pm.expect(array2[i]).to.be.oneOf(array1);
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误 -
response json contain Data | AssertionError: expected false to be truthy …Run Code Online (Sandbox Code Playgroud) 当我在邮递员中使用普通 api 调用并运行测试脚本并设置环境值来调用 api 时,它正在工作,但是当我在邮递员流程中使用该 api 时,环境不会改变。
我的测试中的脚本: pm.environment.set('email', body.email)
我想在每次运行请求时生成一个使用 API 创建的随机用户。
我有一个电子邮件环境变量,每次发送用户创建请求时我希望将其设置为随机电子邮件。
我目前有:
pm.environment.set("Email", pm.globals.get("$randomUserName") + "@myDomain.co.uk");
Run Code Online (Sandbox Code Playgroud)
我想从中获取一个随机用户名$randomUserName
但是,我似乎无法找到如何从“预请求脚本”部分中的 $randomUserName 获取值。
javascript api postman postman-pre-request-script postman-testcase
我将获得 JWT 令牌作为响应,我需要将该 JWT 令牌设置为邮递员中的环境变量,这是我的代码
pm.test("access_token is working", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.access_token).to.exist;
});
pm.environment.set("jwt_token", pm.test);
Run Code Online (Sandbox Code Playgroud)
当 JWT 令牌发生更改时,邮递员环境变量应设置为新值
我正在邮递员中创建一个测试,以检查 JSON 中每个“名称”字段中的关键字“怀孕”。如果 JSON 中的每个“名称”字段都包含关键字,则通过测试,否则失败。
找到下面我尝试使用的脚本
var jsonData = pm.response.json();
var resultCount = jsonData.length;
for (i=0;i<resultCount;i++){
var modelString = jsonData[i].name;
if(modelString.indexOf("Pregnancy") > 0)
{
tests["Each organisation name field " +i+ " contains \"Pregnancy\""] = modelString.has("Pregnancy");
}
else
{
pm.expect.fail("failed");
}
}
console.log("")
[
{
"id": "1-116992830",
"name": "British Pregnancy Advisory Service (BPAS)",
"numberOfLocations": 78
},
{
"id": "1-1560082724",
"name": "PAMS Pregnancy Ultrasound Centre (PAMS 3D & 4D Baby Imaging)",
"numberOfLocations": 1
},
{
"id": "1-2458518720",
"name": "Pregnancy Ultrasound Ltd (Babyface4d)", …Run Code Online (Sandbox Code Playgroud) javascript postman postman-collection-runner postman-testcase
我正在尝试在 Postman 中提交一个表单,然后重定向到另一个 url。重定向的 url 查询字符串包含一些我想在下次调用中使用的信息。这甚至可能吗,如果是,如何?
我在 Postman 文档中找不到任何关于此的内容。
我想将 Postman/Newman API 测试集成到 CICD 中,因此测试结果应该始终通过(或跳过)。因此,我想使用条件测试,取决于响应的数据。
我尝试了GitHub上描述的方法,但我的情况有很大不同。
因此,如果响应的 json 正文包含空数组,则应跳过测试。如果没有,请执行测试...
空数据
{
"data": []
}
Run Code Online (Sandbox Code Playgroud)
可测试数据
{
"data": [
{
"key1": "value1",
"key2": {
"amount": 1357,
"unit": "units"
},
"from": "2019-08-01",
"to": "2019-08-31",
}
]
}
Run Code Online (Sandbox Code Playgroud)
测试脚本
let response = JSON.parse(responseBody);
pm.test("Status code is 200", function() {
pm.expect(pm.response.code).to.equal(200);
});
(pm.expect(pm.response.json().data).to.be.empty === true ? pm.test.skip : pm.test)('Body is empty', function () {
pm.environment.set("key2Amount", response.data[0].key2.amount);
var key2Amount = pm.environment.get("key2Amount");
pm.test("Response includes corresponding amount", function () {
pm.expect(pm.response.json().data[0].key2.amount).to.eql(key2Amount);
});
});
Run Code Online (Sandbox Code Playgroud)
空数据:TypeError: …
我运行 PostMan 查询并收到不记名令牌。BearerToken该测试设置了如下命名的全局变量:
if (responseBody !== "undefined")
{
tests["Bearer Token = " + responseBody] = true;
pm.globals.set("BearerToken", responseBody);
}
Run Code Online (Sandbox Code Playgroud)
当我查看眼睛按钮中的值时,它会显示Current Value带有删除线的文本:
在下一个使用 的查询中BearerToken,它起作用了。
删除线的含义是什么?
我正在处理一个 API 项目并使用 Postman 来测试 API。我写了几个测试用例来检查 null 如下,
//user id is present
pm.test("user id is present", function() {
pm.expect(jsonData.data[0].userId).not.eql(null);
});
Run Code Online (Sandbox Code Playgroud)
也.not.equal()按照这个答案中的描述尝试过。
//user id is present
pm.test("user id is present", function() {
pm.expect(jsonData.data[0].userId).not.equal(null);
});
Run Code Online (Sandbox Code Playgroud)
但是,即使 userId 是null. 有没有想过在 Postman 测试用例中检查空值?
我在测试选项卡中使用 tv4 验证 Postman 中的架构时遇到问题 - 无论我提供什么,它总是返回一个真实的测试。我完全不知所措,真的需要帮忙 - 这是我的示例 JSON 响应和我的测试:
我已经尝试了我能找到的每个 Stack Overflow/教程的大量变体,但没有任何效果 - 它总是返回 true。
//Test Example
var jsonData = JSON.parse(responseBody);
const schema = {
"required" : ["categories"],
"properties": {
"categories": {
"required" : ["aStringOne", "aStringTwo", "aStringThree" ],
"type": "array",
"properties" : {
"aStringOne": {"type": "string" },
"aStringTwo": {"type": "null" },
"aStringThree": {"type": "boolean" }
}
}
}
};
pm.test('Schema is present and accurate', () => {
var result=tv4.validateMultiple(jsonData, schema);
console.log(result);
pm.expect(result.valid).to.be.true;
});
//Response Example
{
"categories": [ …Run Code Online (Sandbox Code Playgroud) 我正在为端点编写测试集合,我希望测试检查响应参数estadoAula是否与请求参数estadoAula具有相同的值,以便我可以测试一切是否按预期进行。参数需要在正文中发送,而不是在 URL 中发送
\n\nRequest Body\n{\n "estadoAula": "1"\n}\nRun Code Online (Sandbox Code Playgroud)\n\nResponse Body\n{\n "idAula": "8d4cf346-cda0-47ca-acae-33981738b4b6",\n "estadoAula": "1"\n}\nRun Code Online (Sandbox Code Playgroud)\n\nTest\n\npm.test("Estado modificado correctamente",function(){\n var data = pm.response.json();\n let estadoAula = pm.request.body.estadoAula; <--- this doesn\xc2\xb4t work, I need to get request param \'estadoAula\' \n pm.expect(data.estadoAula).to.eql(estadoAula);\n});\nRun Code Online (Sandbox Code Playgroud)\n