首页 > 解决方案 > postman.setNextRequest 调用失败

问题描述

我有一组测试,我试图将它们设置为按特定顺序运行。顺序由 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");
}

请求名称是直接从请求本身复制的,所以我不相信它找不到指定的下一个请求,并且上面两个片段中的用法似乎是相同的,所以我有点卡住了。

标签: javascriptpostmanpostman-collection-runner

解决方案


推荐阅读