POSTman上下游传参
上下游传参
企业微信的会议室管理接口中。
- 添加会议室-- meetingroom_id
- 删除会议室 -- 需要使用到 meetingroom_id
根据业务。 上游接口的出参(服务器返回结果)是下游接口的入参。
在做流程类的测试活动,需要处理上下游传参问题。
对应的api文档地址: https://work.weixin.qq.com/api/doc/90000/90135/93619
企业ID |
ww88fc20d87e4cdfa1 |
会议室密钥 |
8kZYaPdkie4nuh3itIwhgUKpam5Xyoq5hU4uivaswp4 |
新建请求
获取Token 根据添加会议室 存在上下游关联
获取token接口返回的token值需要传递给 添加会议室。
- 上游接口 获取Token值
- 下游接口 添加会议室
上游接口设置变量
在获取Token请求上-- 【Tests】面板中添加设置变量的代码
// 1. 获取服务器返回的所有结果
var jsonData = pm.response.json();
// 2. 将服务器返回结果中的access_token 设置为全局变量,变量名为token
pm.globals.set("token", jsonData.access_token);
执行请求。可以看到全局变量中会自动生成一个 token的变量。
下游接口调用变量
在下游接口中使用到token的地方,统一使用变量的方式来引用。
练习
添加会议室成功之后 返回meetingroom_id
编辑会议室需要使用到 meetingroom_id
- 上游 添加会议室
- 下游 编辑会议室
添加会议室接口中使用代码的方式设置变量
对应的发送数据
body 数据
{
"name":"{{$randomHexColor}}F-会议室",
"capacity":10,
"city":"深圳",
"building":"腾讯大厦",
"floor":"18F",
"equipment":[1,2,3],
"coordinate":
{
"latitude":"22.540503",
"longitude":"113.934528"
}
}
设置断言,添加上下游传参。
pm.test("errcode 为 0", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.errcode).to.eql(0);
});
// 设置变量
var jsondata = pm.response.json();
// 将meetingroom_id 的值设置为全局变量 ,变量名为mid
pm.globals.set("mid",jsondata.meetingroom_id)
编辑会议室中 引用变量。
会议室管理主流程
生成时间戳
预定功能使用到的时间是未来的某个时间。
最好是变量的方式生成
【Pre-requests】定义发送接口之前的操作。
在预定会议室这个接口中,必须要设置预定时间,如果我将时间使用今天时间来预定,今天运行这个请求是没有问题,但是到了明天,我再运行这段代码的时候,就会出现问题。
时间已经过期了。
最好的解决方式:
在运行这个请求之前,先用变量的方式获取一下当前的时间,获取完成之后,将这个时间设置一个变量。将变量传给接口。
也可以通过代码的方式来进行时间的计算。
在预定接口上【Pre-request Script】中编写代码。
// 使用JavaScript语法
// 获取当前时间的毫秒数
var timestamp=new Date().getTime();
// 将毫秒数转换为 秒
var date1 = timestamp/1000;
// 定义变量,2个小时之后的时间 2小时=7200秒
var date2 = date1+7200;
// 设置变量 开始时间 parseInt() 是JavaScript中的内置函数,去掉小数点,保留整数部分
pm.globals.set("starttime",parseInt(date1));
// 设置变量 结束时间
pm.globals.set("endtime",parseInt(date2));
starttime和endtime都是自定义名,可自己定义,运行后会在全局变量里显示,点击小眼睛可以查看到
在body里引用对应的变量
原文地址:https://www.cnblogs.com/huxiaoguang1991/p/15129339.html
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
- 在ASP.NET MVC中如何应用多个相同类型的ValidationAttribute?
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
- 为.NET Core项目定义Item Template
- 晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
- 一个关于反序列化的小问题
- 两个简单的扩展方法:TrimPrefix和TrimSuffix
- 谈谈Nullable<T>的类型转换问题
- ASP.NET MVC是如何运行的(3): Controller的激活
- ASP.NET MVC是如何运行的[2]: URL路由
- 一个简单的小程序演示Unity的三种依赖注入方式
- 在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回
- 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
- ASP.NET MVC是如何运行的(4): Action的执行
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- django序列化时使用外键的真实值操作
- 网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
- 如何基于Python爬取隐秘的角落评论
- PHP微信网页授权的配置文件操作分析
- php微信公众号开发之关键词回复
- Python 抓取数据存储到Redis中的操作
- PHP常见字符串操作函数与用法总结
- 利用python对excel中一列的时间数据更改格式操作
- Python 私有属性和私有方法应用场景分析
- django 模型字段设置默认值代码
- Python局部变量与全局变量区别原理解析
- 为什么是 Python -m
- Python csv文件记录流程代码解析
- 简单的Python人脸识别系统
- PHP实现的微信公众号扫码模拟登录功能示例