我有一组测试,我试图将它们设置为按特定顺序运行。使用if / else if语句确定顺序,该语句检查数据文件中的变量并根据其值设置下一个请求。
这对于我的收藏集中的初始请求非常有效。但是,当序列后面的某个请求到达请求时,if语句将识别正确的变量,但跳过postman.setNextRequest()命令并以收集顺序运行在其下面的测试,而不是运行指定的测试。
有人知道为什么会这样吗?似乎是postman.setNextRequest()函数的错误。
请求功能可以按预期运行的地方:
var rsp = pm.response.json();
var base = pm.environment.get('baseUrl');
pm.environment.set('id',data['appName']);
var id = pm.environment.get('id');
pm.test("Status code is 200",function () {
pm.response.to.have.status(200);
pm.test("Response contains correct BaseUrl",function(){
var issuer = rsp.issuer;
pm.expect(issuer).to.contain(base);
//console.log(resname);
console.log('Passed - on to the next one!')
});
});
if (id === 'Application/Member_PRODUCTION'||id === 'Application/B2C_PRODUCTION'||id === 'Application/Claims Transformation_PRODUCTION'){
postman.setNextRequest('PKCE Step 1- Generate PKCE Challenge and Verifier');
}
else if (id === 'Application/sysTest_SysTest2_PRODUCTION'){
postman.setNextRequest("oAuth Step 1 - Unauthorised API call");
}
else{
postman.setNextRequest("oAuth Step 2- Get Session Data Key");
}
功能无法正常工作的下一个请求:
let cookieJar = pm.cookies.jar();
cookieJar.clear(pm.environment.get('baseUrl'));
var id = pm.environment.get('id');
console.log('oAuth check complete for application: '+ id);
pm.test("Status code is 302",function () {
pm.response.to.have.status(302);
console.log('Passed - on to the next one!')
});
if (id === 'Application/Member_PRODUCTION'){
console.log('Next Up - SCIM Tests')
postman.setNextRequest("SCIM Step 1 - Create Member");
}
else{
console.log('Next Up - Login Page Test')
postman.setNextRequest("Login Page Step 1- Get Session data key");
}
请求名称是直接从请求本身复制而来的,所以我不认为它找不到指定的下一个请求,并且上面两个摘录中的用法似乎都相同,所以我有些困惑。