API管理工具之Postman脚本编写

原文地址: https://www.jianshu.com/p/ff5de99dffe2

1. 基本介绍

Postman中支持脚本的编写,可以利用脚本来实现变量的设置,参数的增加以及结果的测试等等。

使用场景介绍:比如我们在用户token,一段时间后过期,每次要重新手动替换比较麻烦吧?更不符合自动化的理念。

解决方案:在登录的Test脚本更新环境中的token中的变量。

如下示例:

if(responseBody){
    let obj=JSON.parse(responseBody);
    pm.environment.set('token',obj.token);
}

1.1 可编写脚本的位置

Postman中支持在三个地方编写脚本:

  1. collection
  2. folder
  3. request

其中collection和folder中脚本的入口如下:

image.png

1.2 执行流程

Postman中事件可分为四种:

  1. Pre-Request
  2. Request
  3. Response
  4. Test

其中Pre-Request和Test支持编写脚本。

具体的执行顺序如下:

execOrder.png

1.3 控制台

有两种:

  1. Postman Console:菜单栏中依次打开View-Show Postman Console
  2. DevTools:菜单栏中依次打开View-Developer-Show DevTools

打开之后就可以看到脚本中的输出日志了。

2. 脚本编写

脚本有pre-request和test两种,所在位置如下:

image.png

注:不同的脚本中可用的变量也有所差异,使用异常会导致报错。

2.1 Pre-request scripts

在请求发送之前执行,可用于设置环境变量。

如设置时间戳

示例:

pm.environment.set("timestampHeader",new Date());

2.2 Test scripts

在收到返回结果后执行,可用于验证返回结果。

示例:

// example using pm.response.to.have
pm.test("response is ok", function () {
    pm.response.to.have.status(200);
});

更多示例可查看Test examples

3. Postman Sandbox

Postman之所以支持脚本的编写是因为Sandbox,这是一个JavaScript的运行环境。

3.1 环境变量

postman.setEnvironmentVariable(variableName, variableValue): Sets an environment variable “variableName”
postman.getEnvironmentVariable(variableName): Returns the value of an environment variable “variableName”
postman.clearEnvironmentVariable(variableName): Clears the environment variable named “variableName”
postman.clearEnvironmentVariables(): Clears all environment variables
// 环境变量对象
environment: A dictionary of variables in the current environment // environment["foo"]

要选中一个环境才能正确执行

3.2 全局变量

postman.setGlobalVariable(variableName, variableValue): Sets a global variable “variableName”
postman.getGlobalVariable(variableName): Returns the value of a global variable “variableName”
postman.clearGlobalVariable(variableName): Clears the global variable named “variableName”
postman.clearGlobalVariables(): Clears all global variables
// 全局变量对象
globals: A dictionary of global variables // globals["bar"]

3.3 其他对象

request {object}: Postman makes the request object available to you while writing scripts. 
responseTime {number} Test-only: The response time in milliseconds 
...

Test-only表示该变量只在Test脚本中可用,在Pre-request中无法使用。

4. Postman Sandbox API reference

  • pm.sendRequest:
// example with a plain string URL
pm.sendRequest('https://postman-echo.com/get', function (err, res) {
    if (err) {
        console.log(err);
    } else {
        pm.environment.set("variable_key", "new_value");
    }
});
  • pm.globals
pm.globals.has(variableName:String):function → Boolean
pm.globals.get(variableName:String):function → *
pm.globals.set(variableName:String, variableValue:String):function
pm.globals.unset(variableName:String):function
pm.globals.clear():function
pm.globals.toObject():function → Object
  • pm.environment
pm.environment.has(variableName:String):function → Boolean
pm.environment.get(variableName:String):function → *
pm.environment.set(variableName:String, variableValue:String):function
pm.environment.unset(variableName:String):function
pm.environment.clear():function
pm.environment.toObject():function → Object
  • pm.expect(assertion:*):Function → Assertion
  pm.test('environment to be production', function () {
      pm.expect(pm.environment.get('env')).to.equal('production');
  });
  • Response Assertion API in test scripts
pm.response.to.have.status(code:Number)
pm.response.to.have.status(reason:String)
pm.response.to.have.header(key:String)
pm.response.to.have.header(key:String, optionalValue:String)
pm.response.to.have.body()
pm.response.to.have.body(optionalValue:String)
pm.response.to.have.body(optionalValue:RegExp)
pm.response.to.have.jsonBody()
pm.response.to.have.jsonBody(optionalExpectEqual:Object)
pm.response.to.have.jsonBody(optionalExpectPath:String)
pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)

5. Reference

  1. Intro to scripts
  2. Debugging and logs
  3. Postman Sandbox
  4. Postman Sandbox API reference
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Pre Request Scripts Postman v0.10+ 版本支持pre-request scri...
    常大鹏阅读 68,610评论 4 69
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • Postman是一款强大的API接口测试工具,有许多不容易发现的好用的功能,下面简单介绍其中一部分功能。详细内容可...
    selfboot阅读 8,570评论 6 25
  • 读一本书,最坏也最好的事,是在书里看到自己的影子。原来一直惧怕却又抑制不住成为的那个样子,不想切断却又不想再去关联...
    乐喜阅读 305评论 0 1
  • 13 其中的关键核心点是,不同涉众的关注点的分割。我有我自己的关注点,你有你的关注点,不同的关注点汇聚到一起,而关...
    玩哲阅读 12,243评论 12 94