基于Postman的API自动化测试

1. 安装

两种安装方式,我热衷于以chrome插件形式安装
Chrome插件
Mac Apphtml

2. 发送请求

Postman最基础的功能就是发送http请求,支持GET/PUT/POST/DELETE,还有不少我不认识的http方法。git

经过填写URL、header、body等就能够发送一个请求,这对于咱们平时作一些简单的测试是够用的。github

若是你的应用须要用到登陆验证,能够经过填写Authorization以知足你的需求。
另外也可使用Chrome浏览器已经登陆的cookie,同步浏览器的cookie须要安装另外一个插件Interceptor(拦截机)。它能够在你发送请求时帮你将已经存在于浏览器的数据随header请求,另外它能够将浏览器的请求写到postman的历史中(须要开启“Request Capture”
)。web

3. 集合

每次配置完一个请求均可以保存到一个集合中,如此一来,下次测试能够直接从集合中找到你要执行的测试。chrome

集合不仅仅只有分类和存储功能,Postman支持一键运行整个集合内的测试。npm

咱们能够把一个请求当作一个Test Case, 那么集合就是一个Test Suite。json

每一个集合都对应一个URL,能够经过Share按钮得到你的集合URL,这个URL能够用于分享给你的队友,或者用于Newman执行。api

Newman是Postman的一个命令行工具,可让API测试加入到你的持续集成任务上。浏览器

4. 环境变量

当作API测试时,你可能常常须要切换不一样的设置。好比,开发环境的API设置、测试环境和产品环境的API设置,你可能须要在不一样的测试环境下使用不一样的配置。为此Postman提供了环境变量,这样你就能够经过修改环境变量,而不需修改请求了。服务器

你能够经过右上角的下拉菜单选择环境,能够经过点击右侧的小眼睛来查看当前环境变量。

5. API测试

Postman测试沙箱是一个JavaScript执行环境,能够经过JS脚原本编写pre-requist和测试脚本。pre-requist能够用来修改一些默认参数。

Postman沙箱集成了几个工具库,好比lodashSugarJstv4,还有一些内置函数如xml2JSON..

tv4用于验证JSON数据,经过编写JSON Schema来验证,JSON Schema的语法请参照这里

测试语法:

// description 为该测试的描述
// value 只要Boolean(value)不等于false,这个测试就是PASS
tests[description] = value

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

咱们以github status的接口为例:
url: https://status.github.com/api/status.json

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

// validate json schema
var schema = {
  properties: {
      status: {type: 'string'},
      last_updated: {type: 'string'}
  }
};

tests["Valid data schema"] = tv4.validate(responseBody, schema);

// check status
var jsonData = JSON.parse(responseBody);
tests["Github status is good"] = jsonData.status === 'good';

运行结果:

示例

http://httpbin.org/ 启发,Postman也提供了一套入门的API http://dump.getpostman.com/ ,接下来咱们将利用这套API作完整的测试。

1. 建立一个环境变量


点击Manage Environments,而后点击Add


添加一个URL变量,咱们会在后续使用

2. 请求一个新用户

咱们须要经过发送一个POST请求到{{url}}/blog/users/来建立一个用户,并须要附加下面的参数到请求body中:

注:记得将环境变量切换到dump.getpostman.com,这样咱们才能获取到{{url}}变量

{
  "username": "abhinav",
  "password": "abc"
}

这个接口如今好像不支持建立用户了,咱们假设已经建立成功了,由于这不影响咱们后续操做

3. 获取用户的Token

Token用于授予终端请求和访问权限的。咱们能够经过POST用户名和密码请求 {{url}}/blog/users/tokens/ 来获取用户的Token,这个Token将用于其余请求中。

{
  "username": "abhinav",
  "password": "abc"
}

4. 格式化JSON

咱们须要从上面的请求结果中获取到用户Token和用户ID,并将这两个值保存到环境变量中,以供后续使用。将下面这段代码添加到测试编辑器中:

var data = JSON.parse(responseBody);

if (data.token) {
  tests["Body has token"] = true;
  postman.setEnvironmentVariable("user_id", data.user_id);
  postman.setEnvironmentVariable("token", data.token);
}
else {
  tests["Body has token"] = false;
}

5. 建立一篇文章

若是上面的测试是在主窗口或者集合运行器中执行,那么 user_idtoken 会自动地被添加到环境变量中。
为了建立一篇文章,咱们须要发送一个POST请求到 {{url}}/blog/posts ,并将 user_idtoken 添加在URL参数中。POST的请求Body以下:

{
  "post": "This is a new post"
}

6. 检查返回数据

若是上述的请求成功的话将返回一个带有post_id的JSON。咱们将在这里验证是否建立文章成功,而且将文章ID保存到环境变量。将下面这段代码添加到测试编辑器中:

var data = JSON.parse(responseBody);
 
if (data.post_id) {
  tests["post_id found"] = true;
 
  postman.setEnvironmentVariable("post_id", data.post_id);
}
else {
  tests["post_id found"] = false;
}

7. 获取一篇文章并验证JSON

咱们将经过上面返回的文章ID来获取咱们建立的文章。这里咱们将用到Postman内置的 tv4 JSON 验证器来检查服务器响应的JSON。
建立一个GET请求到 {{url}}/blog/posts/{{post_id}},并将下面这段代码添加到测试编辑器中:

var schema = {
  "type": "object",
  "properties": {
    "content": "string",
    "created_at": "integer",
    "id": "integer"
  },
  "required": ["content", "created_at", "id"]
};
 
var data = JSON.parse(responseBody);
 
var result = tv4.validateResult(data, schema);
 
tests["Valid schema"] = result.valid;

8. 一键运行与分享集合

咱们将上述每个测试保存到PostmanTest的集合中,这样咱们就能够在任什么时候候打开和运行你想要的测试,而且能够一键运行全部,或者将集合分享给你的小伙伴,也能够获取嵌入式代码(以下面的按钮)。

本文的全部测试用例都在这里

Run in Postman

参考

https://www.getpostman.com/docs

相关文章
相关标签/搜索