一、Pre Request Scripts

Postman v0.10+ 版本支持pre-request scripts。

prerequest script.png

pre-request scripts是一个关联了收藏夹内request,并且在发送request之前执行的代码片段。这对于在request header中包含时间戳或者在URL参数中发送一个随机字符串都是非常有用的。

例如:如果要在request的header中包含一个时间戳,你可以设置一个环境变量由一个函数返回他的值。

postman.setEnvironmentVariable('timestampHeader',new Date());

你可以在header中使 timestampHeader 变量,当request发送的时候,你的pre-request script将被执行,这个timestampHeader 变量的值将会替换{{timestampHeader}}。

注意:我们设置的环境对使用的环境变量必须是有效的。

二、Writing Tests

1.基本结构


![Uploading prerequest script_871640.png . . .]

Basic structure.png

Postman给了你一个环境让你能够为每个request编写、执行你的test,而不用担心任何额外的设置。

一个Postman的test本质上是JavaScript的代码可以用来为一些特殊的test设置值。你可以在对象中设置一个描述性的键作为一个元素,然后声明他如果是true或false。

tests[“Body contains user_id”] = responseBody.has(“user_id”)

这回核对body中是否包含了user_id这个字符串。如果你需要,你可以增加更多的键,这取决于你要用test做多少的事情。

test被保存为收藏夹request的一部分,这对于后端或前端的工程师来确保API运行的正常都是非常有意义的。

2.SNIPPETS


在写test的时候这里有些事情需要注意,Postman尝试使得列出常用的片段更简单。你可以选择你想添加的片段,然后适当的代码将被添加到test的编辑器中。这是一个很好的方法来快速的构建test

3.查看结果


view result.png

Postman在你执行一个request的时候执行test,当然你可以选择不考虑test。结果被显示在一个tab里,并在头部显示多少test通过了测试。你设置在test中的变量将会被列在这里。如果值是true,这个test就会通过。你可以保持test tab活动直到你确保所有的test执行完。

三、Testing Sandbox

Postman的sandbox是一个JavaScript的执行环境,这使得你能够为request写pre-request scripts和test scripts 。不论你写的代码是pre-request scripts还是test script都会在sandbox中执行。

1.常用的库和工具


  • Lodash
    JS utility library

  • jQuery (Deprecated):
    Cross-platform JavaScript library. This will be removed in future versions of the sandbox.

  • BackboneJS (Deprecated):
    Provides simple models, views, and collections. This will be removed in future versions of the sandbox.

  • SugarJS:
    Extends native JS objects with useful methods

  • tv4 JSON schema validator:
    Validates JSON objects against v4 of the json-schema draft

  • CryptoJS:
    standard and secure cryptographic algorithms. Supported algorithms: AES, DES, EvpKDF, HMAC-MD5, HMAC-SHA1/3/256/512, MD5, PBKDF2, Rabbit, SHA1/3/224/256/512, TripleDES

  • xml2Json(xmlString):
    This function behaves the same in Newman and Postman

  • xmlToJson(xmlString)(Deprecated):
    This function does NOT behave the same in Newman and Postman

  • postman.getResponseHeader(headerName) (Test-only):
    returns the response header with name "headerName", if it exists. Returns null if no such header exists. Note: According to W3C specifications, header names are case-insensitive. This method takes care of this.
    postman.getResponseHeader("Content-type") and postman.getResponseHeader("content-Type") will return the same value.

2.环境和全局变量

  • postman.setEnvironmentVariable(variableName, variableValue) : Sets an environment variable "variableName", and assigns the string "variableValue" to it. You must have an environment selected for this method to work. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.

  • postman.setGlobalVariable(variableName, variableValue):
    Sets a global variable "variableName", and assigns the string "variableValue" to it. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.

  • postman.clearEnvironmentVariable(variableName):
    Clears the environment variable named "variableName". You must have an environment selected for this method to work.

  • postman.clearGlobalVariable(variableName):
    Clears the global variable named "variableName".

  • postman.clearEnvironmentVariables():
    Clears all environment variables. You must have an environment selected for this method to work.

  • postman.clearGlobalVariables():
    Clears all global variables.

  • environment:
    A dictionary of variables in the current environment. Use environment["foo"]
    to access the value of the "foo" environment variable.

  • globals:
    A dictionary of global variables. Useglobals["bar"]
    to access the value of the "bar" global variable.

3.动态变量

Postman也有一些动态变量,你可以用在你的request中。这个现在主要还是在实现阶段,更多的功能以后被被添加进来。注意:动态变量不可以用于SandBox中,你只能在request的URL、headers、body中以放在双花括号中间的形式使用。

  • {{$guid}}: Adds a v4 style guid

  • {{$timestamp}}: Adds the current timestamp.

  • {{$randomInt}}: Adds a random integer between 0 and 1000

4. Cookies

+ responseCookies {array} (Postman-only):
Gets all cookies set for the domain. You will need to enable the Interceptor for this to work.

  • postman.getResponseCookie(cookieName)(Postman-only):
    Gets the response cookie with the given name. You will need to enable the interceptor for this to work. Check out the blog post.

5.Request/response相关属性

  • request {object}:
    Postman makes the request object available to you while writing scripts. This object is read-only. Changing properties of this object will have no effect. Note: Variables will NOT be resolved in the request object. The request object is composed of the following:

    • data {object}:
      this is a dictionary of form data for the request. (request.data["key"]=="value")

    • headers {object}:
      this is a dictionary of headers for the request (request.headers["key"]=="value")

    • method {string}:
      GET/POST/PUT etc.

    • url {string}:
      the url for the request.

  • responseHeaders {object}(Test-only)(Deprecated):
    This is a map of the response headers. This is case-sensitive, and should not be used. Check thepostman.getResponseHeader()
    method listed above.

  • responseBody {string}(Test-only):
    A string containing the raw response body text. You can use this as an input to JSON.parse, or xml2Json.

  • responseTime {number}(Test-only):
    The response time in milliseconds

  • responseCode {object}(Test-only):
    Contains three properties:

    • code {number}:
      The response code (200 for OK, 404 for Not Found etc)

    • name {string}:
      The status code text

    • detail {string}:
      An explanation of the response code

  • tests {object}(Test-only):
    This object is for you to populate. Postman will treat each property of this object as a boolean test.

  • iteration {number}:
    Only available in the Collection Runner and Newman. Represents the current test run index. Starts from 0.

(Test-only): This object is only available in the test script section. Using this in a pre-request script will throw an error.

四、Testing 实例

我们来看一些Postman用于test的例子。这些例子中的大多数在Postman中是有效的,他们像一行JavaScript语句一样简答。在你的request中你可以有很多的test。

注意:test脚本在从服务器收到response后执行

1.设置环境变量:

postman.setEnvironmentVariable("key", "value");

2.设置全局变量:

 postman.setGlobalVariable("key", "value");

3.检查response的body中是否包含字符串:

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

4.把XML的body转换成JSON对象:

var jsonObject = xml2Json(responseBody);

5.检查response的body是都为一个字符串:

tests["Body is correct"] = responseBody === "response_body_string";

6.检查JSON的值:

  1.  
    var data = JSON.parse(responseBody);
  2.  
    tests["Your test name"] = data.value === 100;

7.内容类型存在(检查不区分大小写)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader() method returns the header value, if it exists.

8.内容类型存在(区分大小写):

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

9.response的响应时间小于200ms:

tests["Response time is less than 200ms"] = responseTime < 200;

10.状态码为200:

tests["Status code is 200"] = responseCode.code === 200;

11.Code name contains a string:

tests["Status code name has string"] = responseCode.name.has("Created");

12.成功的POST request状态码:

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

13.Use TinyValidator for JSON data

  1.  
    var schema = {
  2.  
    "items": {
  3.  
    "type": "boolean"
  4.  
    }
  5.  
    };
  6.  
    var data1 = [true, false];
  7.  
    var data2 = [true, 123];
  8.  
     
  9.  
    console.log(tv4.error);
  10.  
    tests["Valid Data1"] = tv4.validate(data1, schema);
  11.  
    tests["Valid Data2"] = tv4.validate(data2, schema);

14.Sample data files

JSON files are composed of key/value pairs:

Download JSON file

For CSV files, the top row needs to contain variable names

Download CSV file

Postman使用手册4——API test的更多相关文章

  1. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  2. Zepto,Zepto API 中文版,Zepto 中文手册,Zepto API,Zepto API 中文版,Zepto 中文手册,Zepto API 1.0, Zepto API 1.0 中文版,Zepto 1.0 中文手册,Zepto 1.0 API-translate by yaotaiyang

    Zepto,Zepto API 中文版,Zepto 中文手册,Zepto API,Zepto API 中文版,Zepto 中文手册,Zepto API 1.0, Zepto API 1.0 中文版,Z ...

  3. Postman+Newman+jenkins实现API自动化测试

    最近自己在学习用postman+newman+jenkins实现API自动化测试,这里做个回顾和记录.(此次是在windows上进行的环境搭建) 一.说明 1.大致思路:利用postman做接口调试所 ...

  4. 使用Postman验证TFS Rest API

    概述 你可能已经了解到,TFS自2015版本发布以来,开始支持通过REST API的方式提供接口服务,第三方平台可以通过通用的HTTP协议访问TFS系统,获取数据.请求编译等.REST API在原有. ...

  5. Postman使用手册1——导入导出和发送请求查看响应

    导读: 现在的web和移动开发,常常会调用服务器提供restful接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用.这里介绍一下如何在chrome浏览器利用postma ...

  6. 使用 Postman 测试你的 API

    使用 Postman 测试你的 API Intro 最近想对 API 做一些自动化测试,看了几个工具,最后选择了 postman,感觉 postman 的设计更好一些,我们可以在请求发送之前和请求获取 ...

  7. chrome插件 postman插件 接口测试、API & HTTP 请求调试工具

    Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试. 它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..) ...

  8. Postman使用手册3——环境变量

    一.环境变量 当使用API的时候,你可能经常需要使用不同的设置.环境设置可以让你使用变量自定义request.这个方法可以让你轻松的在不同的设置之间改变而不用改变你的request.你不需要担心要记住 ...

  9. Postman使用手册2——管理收藏

    一.开始使用收藏夹 收藏夹会使你的工作效率更上一层楼 收藏夹可以让单个的request分组在一起,这些request可以被进一步的管理到文件夹来更准确的反应你的API.request也可以在保存到收藏 ...

随机推荐

  1. 【LA11248 训练指南】网络扩容【最大流】

    题意: 给定一个有向网络,每条边均有一个容量.问是否存在一个从点1到点N,流量为C的流.如果不存在,是否可以恰好修改一条弧的容量,使得存在这样的流? 分析: 先跑一遍最大流,如果最大流大于等于C,则输 ...

  2. Activiti 乱码问题

    新版本运行起来中文看起来正常了许多,至少生成图片过程中不会出现乱码了,但不出预料的再次遇到部署时乱码问题,除了保存时报错,还会导致流程实例的节点名称是乱码. 1. IE报错定义时错误提示: 元素类型 ...

  3. 16进制颜色转普通RGB

    做开发的会遇到很多时候UI给到的是16进制的颜色  然而很多时候我们需要把它转换成适合我们方法的RGB参数  当然通过网页转换也可以达到目的 但是我现在选择写一个分类来解决  一劳永逸~ 1.首先说下 ...

  4. Linux系统中当前路径不加入PATH的原因

    主要是出于安全的考虑,由于系统默认是允许所有人在/tmp下写入任何文件的,万一有居心不良的用户或者黑客入侵到计算机,并在/tmp下面埋下木马,名字为ls,当用户用root身份登录后,到/tmp目录执行 ...

  5. Mysql蠕虫复制

    将查询出来的数据插入到指定表中,形如: INSERT into user_info(version,create_user_count,create_pc_count) select version, ...

  6. Java 读取jar内的文件的超简便方法

    坑爹的java课程设计,偏要用jar来运行 读取.存储jar内文件的支持也好低 存储方法: 进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Ja ...

  7. 利用Ant与Proguard混淆

    利用Ant与Proguard混淆 摘自:https://blog.csdn.net/forlong401/article/details/22956711 2014年04月04日 20:20:21 f ...

  8. u盘安装Linux系统详细教程

    2012-05-06 02:30:44 分类: LINUX 想不想体验一下Linux下呢?刻盘太浪费钱,而U盘却可以多次利用.本文就是要介绍如何通过U盘安装Linux系统的.只要用Universal- ...

  9. 【Django】Django Debug Toolbar调试工具配置

    正在发愁怎么调试Django,就遇到了Django Debug Toolbar这个利器. 先说遇到的问题: 网上也有教程,不过五花八门的,挨个尝试了一遍,也没有成功运行.最后终于找到问题所在: 从开发 ...

  10. .NET基础 (07)异常的处理

    异常的处理1 如何针对不同的异常进行捕捉2 如何使用Conditional特性3 如何避免类型转换时的异常 异常的处理 1 如何针对不同的异常进行捕捉 C#中一个try块可以有多个catch块,每个c ...