51Testing软件测试论坛

标题: Postman 环境变量设置问题 [打印本页]

作者: 乐哈哈yoyo    时间: 2017-6-26 13:01
标题: Postman 环境变量设置问题
问题背景:

最近在借助Postman做一个简单的接口自动化,由于流程较长,所以下一个接口要用到上一个接口的数据,遂使用设置环境变量的方法保存一些变量,以便后续接口使用。

问题描述:

现在有A、B两个接口,A接口返回的response的body中是以下结构,我要取rows里面的order_id给B接口用。

  1. {
  2.   "status": 1,
  3.   "code": 0,
  4.   "msg": "获取**成功!",
  5.   "data": {
  6.     "rows": [
  7.       {
  8.         "order_id": "1493967886001",
  9.          ......
  10.       }
  11.     ],
  12.     "pagenation": {
  13.       "total": "1",
  14.       "page": "1",
  15.       "pagesize": "20",
  16.       "page_offset": 0,
  17.       "page_total": 1
  18.     }
  19.   }
  20. }
复制代码
解决办法:

1、在A接口的test里面设定环境变量
  1. var data = JSON.parse(responseBody);

  2. if(data.status ==1){
  3.     tests["查询成功"] = true;
  4.     postman.setEnvironmentVariable("order_id", data.data.rows.order_id);
  5. }
  6. else{
  7.     tests["查询成功"] = flase;
  8. }
复制代码
2、在B接口的参数Body中调用{{order_id}},但是我发现查看环境变量,A接口的这个值并没有赋予到环境变量order_id里面。

问题分析

其他接口我也是这样调用是没有问题的,但是这个接口不同的是在A接口的response里面的rows内多了一个[],所有没有成功赋予该值到order_id。我百度了一下资料,并没有相关的介绍,所有在此问问各位有什么解决的办法。



作者: 巴黎的灯光下    时间: 2017-6-26 15:44
试下这个了 data.data.rows[0].order_id
或者这样循环去找
for (var i = 0;i < jsonData.data.rows.length;i++){
var list = jsonData.data.rows[i];
tests["订单编号"+list.order_id] =list.order_id
}
作者: 乐哈哈yoyo    时间: 2017-6-26 15:45
巴黎的灯光下 发表于 2017-6-26 15:44
试下这个了 data.data.rows[0].order_id
或者这样循环去找
for (var i = 0;i < jsonData.data.rows.lengt ...

嗯,谢谢,已经解决了
作者: cherrycai    时间: 2018-1-1 21:03
真的吗?我回去试试
作者: cherrycai    时间: 2018-1-1 22:44
巴黎的灯光下 发表于 2017-6-26 15:44
试下这个了 data.data.rows[0].order_id
或者这样循环去找
for (var i = 0;i < jsonData.data.rows.lengt ...

非常感谢,data.data.rows[0].order_id 这样就可以用了。
作者: 就是爱测试    时间: 2018-1-4 11:45
学习




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2