求助:使用postman进行断言时,从全局变量中取出的值与全局变量中对应的值不一致

背景:我想在接口层面确定一下,新增应用成功后,能否被查询出来。
工具:postman

下面是代码:

前置处理的代码:
//使用时间戳生成随机数,用于生成随机的app_name

var randstr=Date.now();

var appname=‘APP-’+randstr;

pm.environment.set(“appname”,appname);

pm.globals.set(“appname1”,appname);

后置处理的代码:

//构建请求检查新增的应用能否被查询出来

var name = pm.globals.get(‘appname1’)

var status = pm.globals.get(‘appstatus1’)

const fingnewapp = {

url: 'https://stars-test.starlinke.tech/rest/application?page=1&perPage=20&name=' + name + '&status=' + status,

method: 'get',

header: 'authorization:Bearer' + ' ' + pm.environment.get('token'),

};

pm.sendRequest(fingnewapp, function (err, response) {

var appjsdata = response.json();

var chartappname = appjsdata.data.data[0]['name'];

var chartappstatus = appjsdata.data.data[0]['status'];

//将查询结果存入变量

pm.globals.set("chartappname1", chartappname);

console.log("222222"+chartappname);

var ap=pm.globals.get("chartappname");

console.log("11111"+chartappname)

pm.globals.set("chartappstatus1", chartappstatus);

});

//检查新增的应用能否被查询出来

tests[“检查新增的应用能否被查询出来”] = pm.globals.get(“chartappname1”) == pm.globals.get(“appname1”)

console.log(pm.globals.get(“chartappname1”))

console.log(pm.globals.get(“appname1”))

执行后的结果:

问题现象:
我发现断言失败后,我去检查了我的全局变量,发现对应的值已经被成功的写入,但是在取值进行断言时,我发现我取的chartappname1的值始终是上一次的结果。而appname1取值是当前执行的结果。进而导致我的断言一直失败。我检查代码后,没有发现错误在哪里,所以想向各位前辈请教一下,是什么原因导致了我的取值错误。。。

在当前请求里的 tests 当中设置的全局变量,在整个接口调用完毕之后才会生效,所以在当前接口的脚本中获取不到。

可以把整个后置代码的逻辑变成一个新的请求,在 params 中获取 appname

然后剩余的断言逻辑写到新的接口请求当中,就可以获取到之前保存的 appname 和当前获取到的 appname 是否一致了

老师你好,我这边的查询就是一个独立的请求,我是觉得麻烦,才写到后置处理里面去的。可以在后置处理做相应的处理,达到我的预期需求吗?

目前还没有好的方法,同学可以通过自己写代码的方式,这样实现起来会更灵活一些

好的 谢谢老师

关闭