用Mockoon测试API交互

译文
开发 测试
自动处理重复的任务是系统管理员日常工作的核心部分。这种自动化越来越需要使用基于Web的API ,以便跨设备、云提供商或软件即服务(SaaS)工具来协调活动。无论编写的是shell脚本还是与Web服务交互的Ansible剧本,您都需要彻底测试代码。

​译者 | 布加迪

审校 | 孙淑娟

自动处理重复的任务是系统管理员日常工作的核心部分。这种自动化越来越需要使用基于Web的API ,以便跨设备、云提供商或软件即服务(SaaS)工具来协调活动。无论编写的是shell脚本还是与Web服务交互的Ansible剧本,您都需要彻底测试代码。

模拟API的能力是这个测试过程的重要部分。模仿真实的API,以便您开发和测试API交互。虽然一些工具和供应商提供实时沙盒环境,但能够在本地模仿API对于高级测试场景非常有用,比如修改响应的正文或HTTP状态代码。如果您正处于自行开发API的初始阶段,还需要在编写代码之前快速构建端点。

Mockoon就是支持这么做的一种选择。Mockoon是一款出色的开源工具,有丰富的用户界面,可用于快速构建模拟API,并在本地机器上运行它们。

安装Mockoon

您可以通过官方软件包在Windows、macOS和Linux上安装Mockoon,包括AppImage和RPM格式。Mockoon安装完毕后,官方文档为新用户提供了出色的​​教程​​。

Mockoon拥有图形界面和命令行接口(CLI)实用程序,本文着重介绍如何使用图形界面。

创建环境

在Mockoon中处理新项目的第一步是创建一个新环境。环境让您可以将API端点分成逻辑组。每个环境也可以在自己的端口上运行,使您能够在同一主机上模拟多个API。环境保存为JSON文件,可以轻松导入、导出并与代码一起保存。

只要点击如下所示的“新建环境”图标,即可创建一个环境。它将提示您选择保存环境JSON文件的位置。环境创建后,您可以开始为它添加路由。

图1

添加基本的API路由

大多数API交互都涉及一个简单的请求和响应循环,该循环常常返回JSON对象。开始使用Mockoon前,建立一条简单的API路由。点击界面中的+号,即可为环境添加路由。

我在/api/v1/healthcheck处添加了返回200 OK状态码的路由,如下例所示。该示例还返回JSON响应,含有关于健康状况检查的信息:

图2

一旦添加路由并启动服务器(或重新启动,如果它已经在运行),端点就可以访问了:

图3

生成随机响应数据

API响应正文中的静态值涵盖许多基本的测试用例。Mockoon也可以在响应正文中生成随机数据,用于更真实的测试。​​Faker.js库​​用于生成随机数据。随机生成的值可以在响应正文中进行模板化,并返回给请求者。

在下面示例中,我添加了另一个端点:/api/v1/hosts/:id。:id表示这是一个URL参数。响应正文返回JSON对象,该对象包含附有随机生成数据的多个字段。

图4

使用此配置,针对API端点的每次调用都显示一组不同的假数据:

图5

注意:Mockoon实现的Faker.js版本可能不是最新的,因此在编写模板时务必确保查看的是正确版本的Faker文档。

添加身份验证和规则

大多数API端点都需要身份验证,常常采用含有API令牌的HTTP标头这种形式。确保您的工具能够正确处理来自端点的身份验证失败对于开发强大的自动化非常重要。Mockoon允许您定义可用于返回不同响应的规则,比如标头需求。

规则是在路由的“规则”选项卡上定义的。下面的示例使用两个规则扩展了/api/v1/hosts/:id端点。第一条规则(响应 1)返回HTTP 401 Unauthorized。如果没有其他规则与请求匹配,就使用第一条规则。

图6

第二条规则(响应 2)要求请求含有值等于40650a76的X-Auth-Token HTTP标头。任何与此规则匹配的请求都会收到200 OK和来自上一个示例的JSON响应。

图7

这些规则导致任何在X-Auth-Token标头中不包含正确值的请求失败,并返回HTTP 401 Unauthorized。拥有正确令牌的请求将继续接收数据,如下所示:

图8

这是使用规则根据请求属性控制响应行为的一个基本示例。

Mockoon的规则引擎功能强大,能够创建非常高级的场景。如果查阅​​官方文档​​,可以最充分地了解它。

原文标题:Test API interactions with Mockoon​,作者:Anthony Critelli​

责任编辑:华轩 来源: 51CTO
相关推荐

2022-08-19 11:19:49

单元测试Python

2024-10-10 17:46:48

2021-03-26 15:18:11

代码工具Mockoon

2021-08-09 08:20:59

API安全测试漏洞

2019-09-12 18:10:38

HTTPieAPI测试Python

2009-12-09 09:15:47

从Java走进ScalTwitter API

2024-10-29 16:13:04

Python字典API

2019-04-09 10:35:14

API数据安全性

2021-11-23 06:02:20

APIOpenResty网关

2023-11-29 11:31:03

2012-06-27 09:47:05

ibmdw

2023-03-24 16:21:08

2024-11-20 12:17:04

2020-10-27 09:18:19

性能测试查询

2022-01-03 08:04:31

API安全测试工具安全工具

2023-11-04 16:28:54

2021-02-03 13:56:09

KerasAPI深度学习

2018-11-27 11:18:23

PythonConu测试容器

2023-10-07 09:04:31

FastAPI单元测试

2021-10-27 16:03:43

Python编程语言代码
点赞
收藏

51CTO技术栈公众号