Postman 串行传参和动态传参详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postman 串行传参和动态传参详解相关的知识,希望对你有一定的参考价值。

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件

用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行

 

目录

串行传参

动态传参

 

使用的接口是微信公众号开发文档里面的接口,详细请看开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

首先需要获取到接口测试号,开始开发>接口测试号申请>获得appID和appsecret,位置为:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421137522

其次获取access_token

接口调用说明:

https请求方式: GET,

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
输入appID和appsecret得到access_token,如下图所示:
技术分享

 

串行传参

举例:先获取到access_token值,然后再查看已创建的标签

1.提取接口返回值

 在获取access_token的接口中,Tests下输入如下代码:

let json = JSON.parse(responseBody);//声明一个变量json,将JSON返回Body里面的值解析并给变量json
tests["a"] = json.expires_in ===7200;//设置一个断言
pm.globals.set("token", json.access_token);//获取json里面的access_token的值给token,运行一次就更新一次

操作如下图所示:

技术分享

2.将提取到的返回值作为下一个接口的入参(查看已创建的标签)

接口调用说明,详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140837

http请求方式:GET(请使用https协议)

https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN

此处的access_token值就为上一步提取到的值,因为access_token值只能用2小时,为了避免麻烦,所以设置为全局变量为{{token}}

操作如下图所示:

技术分享

运行一次便自动添加,设置为全局变量后,每一次的token值都会发生改变,如下图所示:

技术分享

将这两个接口用例保存到同一文件夹下,并运行,如下图所示:

技术分享

技术分享

运行后的结果如下图所示:

技术分享

 

动态传参

做自动化测试时,有些接口不适合把参数写死,所以就需要动态传递参数

动态传参有三种实现方式:

1.Postman有以下内建变量,适合一次性使用

    ①{{$guid}}//生成GUID
    ② {{$timestamp}}//当前时间戳
    ③{{$randomInt}}//0-1000的随机整数
2.参数依赖上一个请求的返回
    上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值
3.参数每次都不同,但之后的断言或别的请求里可能还要用
    在Pre-request Script里写代码处理,存为环境变量,参数里用{{变量名}}取值
 
举例为百度接口,http://www.baidu.com/s?,请求方式为GET

实现方式一:

①{{$guid}}//生成GUID
生成GUID值,操作如下图所示:
技术分享
② {{$timestamp}}//当前时间戳
时间戳是根据1970-01-01开始进行计算的,通过该方法获取到的值,进行转换后,就是当前的时间值
技术分享
转换地址为:http://tool.chinaz.com/Tools/unixtime.aspx,转换如下图所示:
技术分享

③{{$randomInt}}//0-1000的随机整数

产生0-1000的随机整数,可用于自动化用户名操作,操作如下图所示:

技术分享

实现方式二:

和串行传参方式一样,此处不再复述

实现方式三:

在Pre-request Script里写代码处理,存为环境变量,参数里用{{变量名}}取值
Pre-request Script和Tests的区别:
好比如TestNG里面的用例与前置条件
Pre-request Script是设置前置条件的,不能设置断言,在运行Tests里面的代码时,会先运行Pre-request Script里面的代码
Tests可以设置断言,提取返回值等
技术分享

因此,存为环境变量,是在Pre-request Script里写代码,如下图所示:

技术分享

两种格式都可惜,任选其一即可,代码如下所示:

postman.setGlobalVariable("value","test"+(parseInt (Math.random()*100)));//*100是指只取0~99之间的随机值
pm.globals.set("value", "test"+(parseInt (Math.random()*100)));

 

 


以上是关于Postman 串行传参和动态传参详解的主要内容,如果未能解决你的问题,请参考以下文章

路由传参和路由守卫

Postman接口测试动态传参——动态获取token值

shell程序传参和main函数传参的区别

第五章 shell函数的定义执行传参和递归函数

flask四:URL两种传参方式(路径传参和get传参)

多线程启动线程:需要传参和不需要传参两种情况