问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用Postman进行API测试

创作时间:
作者:
@小白创作中心

使用Postman进行API测试

引用
CSDN
1.
https://blog.csdn.net/m0_65111097/article/details/136625501

一、安装

Postman 提供了两种安装方式,你可以根据自己的需求选择适合的方式进行安装。我推荐以 Chrome 插件形式安装,这样可以更方便地在浏览器中使用。

  • Chrome 插件:适用于大多数用户,可以直接在 Chrome 浏览器中使用。
  • Mac App:适用于 Mac 用户,可以作为独立的应用程序使用。

二、发送请求

Postman 最基础的功能就是发送 HTTP 请求,支持 GET、PUT、POST、DELETE 等多种 HTTP 方法。通过填写 URL、header、body 等信息,就可以发送一个请求,这对于平时做一些简单的测试已经足够使用。

如果你的应用需要用到登录验证,可以通过填写 Authorization 字段来满足需求。另外,Postman 还支持使用 Chrome 浏览器已经登录的 cookie。要实现这一点,需要安装另一个插件 Interceptor(拦截器)。它可以在你发送请求时帮你将已经存在于浏览器的数据随 header 请求,另外它可以将浏览器的请求写到 postman 的历史中(需要开启“Request Capture”)。

三、集合

每次配置完一个请求都可以保存到一个集合中,这样下次测试时可以直接从集合中找到你要执行的测试。集合不单单只有分类和存储功能,Postman 支持一键运行整个集合内的测试。

你可以把一个请求当做一个 Test Case,那么集合就是一个 Test Suite。每个集合都对应一个 URL,可以通过 Share 按钮获得你的集合 URL,这个 URL 可以用于分享给你的队友,或者用于 Newman 执行。Newman 是 Postman 的一个命令行工具,可以让 API 测试加入到你的持续集成任务上。

四、环境变量

在做 API 测试时,你可能经常需要切换不同的设置。比如,开发环境的 API 设置、测试环境和产品环境的 API 设置,你可能需要在不同的测试环境下使用不同的配置。为此 Postman 提供了环境变量,这样你就可以通过修改环境变量,而不需修改请求了。

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

五、API 测试

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

Postman 沙箱集成了几个工具库,比如 lodash、SugarJs、tv4,还有一些内置函数如 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、创建一个环境变量

添加一个 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_id 和 token 会自动地被添加到环境变量中。

为了创建一篇文章,我们需要发送一个 POST 请求到 {{url}}/blog/posts,并将 user_id 和 token 添加在 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 的集合中,这样我们就可以在任何时候打开和运行你想要的测试,并且可以一键运行所有,或者将集合分享给你的小伙伴,也可以获取嵌入式代码(如下面的按钮)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号