Postman高级技巧::Pre-Request-Script &Tests-Script
本文最后更新于 913 天前,其中的信息可能已经有所发展或是发生改变。

身为一个接口自动化测试工具,具备在运行中的动态行为不足为奇,Postman集成了一个强大的,基于NodeJS的Script引擎,利用它可以为请求以及响应添加一些动态的行为:

1)在发送请求之前,编写Pre-Request-Script,为请求参数进行加密处理、参数化等。

2)接收到请求响应后,编写Tests-Script,制定响应断言、处理返回的数据等。

大致的流程如下图:

实战

现有两个接口,分别为获取Token和获取用户信息,获取Token接口参数需要计算Sign签名,该接口的返回值将成为获取用户信息接口的参数。

环境变量

为了方便的在测试环境以及开发环境中无缝切换,将相关的信息配置为两套环境变量

2019-08-19-73729
2019-08-19-073729

OpenAccountApi.getUserToken

接口地址http://{{host}}/api2/OpenAccountApi.getUserToken
请求方式POST
请求参数?_app_key=[]&_time=[]&_sign=[]
请求正文{“account”:”账号信息”}
响应正文{“result”: { “token”: “”,”user_id”: ?},”status”: 0}

按照接口约定,配置相关的Postman请求:

上图上中的{{_time}}{{_sign}}变量目前还取不到值,因为在环境变量中还没有相关定义,

现在开始编写相关的Pre-Request-Script脚本:

// 前置处理器:计算请求签名
var _app_secret = pm.environment.get("provider_app_secret");
var _time = (new Date()).valueOf();
var _pre_sign = 'requestBody=' + pm.request.body.raw + ',time=' + _time + ',appSecret=' + _app_secret;
var _sign = CryptoJS.MD5(_pre_sign).toString();
pm.environment.set("_time", _time);
pm.environment.set("_sign", _sign);

console.log('[Pre]OpenAccountApi.getUserToken _pre_sign='+_pre_sign+',_sign=' + _sign);

该脚本完成后,之前参数中使用{{_sign}}的就能动态的获取到值了。

请求发送成功后,需要提取响应正文的token作为下一个接口的参数,取出来放入Postman环境变量中即可。

编写相关的Tests-Script脚本:

// 响应断言
pm.test("Body matches token", function () {
    pm.expect(pm.response.text()).to.include(""token":");

    // 提取Token
    var result = pm.response.json().result;
    pm.environment.set("_userid", result.user_id);
    pm.environment.set("_token", result.token);
    console.log('[Tests]OpenAccountApi.getUserToken _token=' + result.token + ',user_id=' + result.user_id);
});

OpenUserApi.findById

接口地址http://{{host}}/api2/OpenAccountApi.getUserToken
请求方式POST
请求参数?_token=[]
请求正文{“id”:用户Id}
响应正文{“result”: {用户信息},”status”: 0}

第二个接口没有什么特殊处理,写了个简单的响应断言,若响应正文中包含”status”:0,则表明请求成功了。

console.log('[Tests]OpenUserApi.findById, requestBody=' + pm.request.body.raw);

pm.test("Body matches status", function () {
    pm.expect(pm.response.json().status).to.eql(0);
});

最终的测试效果

Ctrl + Shift + I 可以弹出开发者面板,查看到打印的相关日志。

Collection Runner

运行日志

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇