上下游传参

企业微信的会议室管理接口中。

  1. 添加会议室— meetingroom_id
  2. 删除会议室 — 需要使用到 meetingroom_id

postman 上下游传参 - 图1

根据业务。 上游接口的出参(服务器返回结果)是下游接口的入参。

在做流程类的测试活动,需要处理上下游传参问题。


image.png
对应的api文档地址: https://work.weixin.qq.com/api/doc/90000/90135/93619

企业ID ww88fc20d87e4cdfa1
会议室密钥 8kZYaPdkie4nuh3itIwhgUKpam5Xyoq5hU4uivaswp4

新建请求

image.png
获取Token 根据添加会议室 存在上下游关联
获取token接口返回的token值需要传递给 添加会议室。

  1. 上游接口 获取Token值
  2. 下游接口 添加会议室

上游接口设置变量

在获取Token请求上— 【Tests】面板中添加设置变量的代码

  1. // 1. 获取服务器返回的所有结果
  2. var jsonData = pm.response.json();
  3. // 2. 将服务器返回结果中的access_token 设置为全局变量,变量名为token
  4. pm.globals.set("token", jsonData.access_token);

image.png
执行请求。可以看到全局变量中会自动生成一个 token的变量。
image.png

下游接口调用变量

在下游接口中使用到token的地方,统一使用变量的方式来引用。
image.png

练习

添加会议室成功之后 返回meetingroom_id
编辑会议室需要使用到 meetingroom_id

  1. 上游 添加会议室
  2. 下游 编辑会议室

添加会议室接口中使用代码的方式设置变量
image.png
对应的发送数据
body 数据

  1. {
  2. "name":"{{$randomHexColor}}F-会议室",
  3. "capacity":10,
  4. "city":"深圳",
  5. "building":"腾讯大厦",
  6. "floor":"18F",
  7. "equipment":[1,2,3],
  8. "coordinate":
  9. {
  10. "latitude":"22.540503",
  11. "longitude":"113.934528"
  12. }
  13. }

设置断言,添加上下游传参。

  1. pm.test("errcode 为 0", function () {
  2. var jsonData = pm.response.json();
  3. pm.expect(jsonData.errcode).to.eql(0);
  4. });
  5. // 设置变量
  6. var jsondata = pm.response.json();
  7. // meetingroom_id 的值设置为全局变量 ,变量名为mid
  8. pm.globals.set("mid",jsondata.meetingroom_id)

编辑会议室中 引用变量。
image.png

会议室管理主流程

企业微信-会议室管理-冒烟测试.postman_collection.json
image.png

生成时间戳

预定功能使用到的时间是未来的某个时间。
最好是变量的方式生成

image.png
【Pre-requests】定义发送接口之前的操作。


在预定会议室这个接口中,必须要设置预定时间,如果我将时间使用今天时间来预定,今天运行这个请求是没有问题,但是到了明天,我再运行这段代码的时候,就会出现问题。
时间已经过期了。

最好的解决方式:
在运行这个请求之前,先用变量的方式获取一下当前的时间,获取完成之后,将这个时间设置一个变量。将变量传给接口。
也可以通过代码的方式来进行时间的计算。

在预定接口上【Pre-request Script】中编写代码。

  1. // 使用JavaScript语法
  2. // 获取当前时间的毫秒数
  3. var timestamp=new Date().getTime();
  4. // 将毫秒数转换为 秒
  5. var date1 = timestamp/1000;
  6. // 定义变量,2个小时之后的时间 2小时=7200秒
  7. var date2 = date1+7200;
  8. // 设置变量 开始时间 parseInt() 是JavaScript中的内置函数,去掉小数点,保留整数部分
  9. pm.globals.set("starttime",parseInt(date1));
  10. // 设置变量 结束时间
  11. pm.globals.set("endtime",parseInt(date2));

image.png

image.png

Postman 多接口测试.png