最强PostMan使用教程(3)- script

最强PostMan使用教程(3)- scriptpostman中的scriptPre-requestscripts递增的url参数变化的requestbodytestscript在testsuite中运行之前都两篇文章都是一年多之前的事情了。最开始的初衷是想把各种细节都写了,中途因为忙其他事情,就忘记了,放弃了。但我这个博客好像最火的就是这个系列,一直有人评论。针对问的最多的问题,我还是试着看看写下一些东西,看看是否有用吧。

大家好,又见面了,我是你们的朋友全栈君。

之前都两篇文章都是一年多之前的事情了。最开始的初衷是想把各种细节都写了,中途因为忙其他事情,就忘记了,放弃了。但我这个博客好像最火的就是这个系列,一直有人评论。针对问的最多的问题,我还是试着看看写下一些东西,看看是否有用吧。。。

虽然postman一直也有在用,但用最简单的方式构建request去测试接口已经满足我日常工作的需求,就很少有动力再去仔细研究了。这两天又看看官网,发现文档变得更全了,功能也变多了。时常有人私信我,问postman能否动态的定制化request的内容。首先,postman就是为custom request而生的,动态的定制化肯定是支持的,只是需要多点研究而已。这篇文章主要介绍postman里面的scripts,搬砖之作,希望对您有帮助。

postman中的script

postman集成了一个强大的,基于nodejs的script引擎,借助它,您可以为requests和collections添加动态的行为。
这样就可以在编写test suite时,构建可以包含动态参数的request,在request之间传递数据等等。您可以在流程中的两个事件中添加要执行的JavaScript代码:
1. 在发送request之前,编写pre-request script,定制化request。
2. 收到response之后,用test script,处理返回的数据。

整个流大概是这样的:
这里写图片描述

Pre-request scripts

pre-request script就是一段在发送request之前执行的代码。大家可以自己脑补在什么场景可以用到它。比如,随机的URL参数,变化的requst body等。
这里要注意的是,pre-request script和test scripts一样,都是javascript,同时,和angular js一样,可以用两个{
{}}访问环境变量。
还是赶紧来举例吧。

递增的url参数

最近一直在玩elasticsearch,就用elasticsearch的API来作为例子吧。我们通过GET API,可以获取ES中的数据。我现在从tushare上把新华保险的日线数据导出为json格式的文件,存储到ES当中。每条记录都有一个id。通过postman单个调用接口,大概是这样的:(截图中的url应该是localhost:9200/xhbx/stock-record/_search?q=_id:707)
这里写图片描述
但是如果我想通过run collections的方式,一次读出100天的数据呢?那就是从712开始,每次request递增1。查询100次。
借助于pre-request script我们可以很方便的实现这个需求。
首先,查看当前的环境变量,点击右上角的眼睛图标:
这里写图片描述
你可以看到自定义的SampleHostGlobals

我们可以定一个global变量xhbxId,用于自增。点击上图的Edit。或者点击眼睛图标旁的齿轮图标,添加一个global变量:
这里写图片描述

然后,配置我们的request使用xhbxId。点击send,你会发现,能够正确请求到id为707的数据:
这里写图片描述

点击parameter下方的Pre-request scripts选项,编辑我们的脚本:

var temp = parseInt(postman.getGlobalVariable("xhbxId"));
temp += 1;
postman.setGlobalVariable("xhbxId", temp);

脚本的意思是给xhbxId自增1。前面已经说过,pre-request script会在request被发送之前运行,所以,所以每次我们点击send,xhbxId都应该增加1。也就是下一次是708。
另外,这里要注意的是,所有的环境变量或者global变量,都是以字符串的形式存储的,所以我们的自增操作需要先转化为int。
运行结果如图:
这里写图片描述

变化的request body

很多人也问我,request body的问题。其实和url参数一样,直接引用就是了。
保持我们之前的Pre-request scripts不变。把request的类型改成POST,编辑我们的request body,使用{
{xhbxId}}
的方式获取参数。本次调用正确的递增了Id为709。
这里写图片描述

test script

接下来,通过test script测试结果。保持我们之前的Pre-request scripts不变。如果再按一次send,则返回的结果中,应该包含如下字符串:
"_id":"710"
那么,我们就应该在test script里面,测试response里面应该包含如上字符串。test script和pre-request script是一样的,所以我们可以很方便的使用xhbxId作为判断的比较值。

var temp = postman.getGlobalVariable("xhbxId");
tests["Body matches string"] = responseBody.has("\"_id\":\""+temp+"\"");

具体操作如下图:
这里写图片描述

  • 选择Tests
  • 读出xhbxId
  • 放入response body: Contains strings的snippet
  • 运行之后,test的结果是OK的,1/1
  • 710被匹配上。

在test suite中运行

好了,准备好上面的条件,我们把test case保存到collection当中(我新建了一个叫test_script的collections,不知道怎么操作的话看我的教程2)。运行个100次。

这里写图片描述

测试通过,接口没问题。这时,运行了100次,global的xhbxId应该从710增加到810了。

这里写图片描述

确实是这样,postman正确运行。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139451.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • getparameter方法的作用_get to和arrive的区别

    getparameter方法的作用_get to和arrive的区别getParameter和getAttribute区别(超详细分析)对getParameter过程,如下图:对getAttribute过程,如下图:两者区别:①getParameter()获取的是客户端设置的数据。getAttribute()获取的是服务器设置的数据。②getParameter()永远返回字符串getAttribute()返…

    2025年8月19日
    2
  • 8种垂直居中的方法

    八种垂直居中的方法垂直居中的需求经常遇到,通过资料实践了八种垂直居中的方法。以下的方法都围绕着该HTML展开HTML代码<divstyle=”width:300px;height:300px;”class=”wrap”><divstyle=”width:100px;height:100px”class=”box”></div></div>CSS方法1(常用):display:flex.wra

    2022年4月4日
    36
  • 密码学笔记

    密码学笔记

    2021年5月19日
    99
  • Oracle数据库性能优化(Hbase是什么数据库)

    所有数据库包括Oracle的sql优化都是针对程序员的,而不是针对dba的,第一,尽量防止模糊,明确指出,即用列名代替*,第二,在where语句上下工夫。第三多表查询和子查询,第四尽量使用绑定。根据计算机硬件的基本性能指标及其在数据库中主要操作内容,可以整理出如下图所示的性能基本优化法则:这个优化法则归纳为5个层次:1、减少数据访问(减少磁盘…

    2022年4月17日
    56
  • mybatis log plugin激活码(JetBrains全家桶)

    (mybatis log plugin激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlbnNlSWQiOi…

    2022年3月21日
    81
  • qt 当前窗口句柄_QT获取窗口句柄

    qt 当前窗口句柄_QT获取窗口句柄mac安装paramiko$brewinstallopenssl$/usr/local/opt/openssl/bin/c_rehash$exportARCHFLAGS=”-archx86_64&q…用Canvas制作剪纸效果在做剪纸效果之前,先介绍剪纸效果运用到的一些知识:1.阴影:在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影…

    2022年7月14日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号