接口Mock技术介绍
相信学习过程序设计的读者朋友们,一定对“桩(Stub)”这个概念并不陌生。它是指用来替换一部分功能的程序代码段。桩程序代码段可以用来模拟已有程序的某些功或者是将实现的系统代码的一种临时替代方法。插桩方法被广泛应用于开发和测试工作中。在接口测试中也需要这种处理方式应用Mock技术,Mock的意思是模拟,就是针对发出的请求,通过某种技术手段来模拟测试对象的行为,返回预先设计的结果。在真实系统并没有实现对应的功能情况下,而只是根据前、后端给出的接口设计规范、示例文档,来设计接口测试用例及实现对应脚本,待系统实现对应的接口功能后再进行替换。从而来实现测试与开发并行或测试先行的目的。目前针对不同的语言有很多现成的Mock工具可以来帮助我们来完成接口测试工作。如:针对Java语言有EasyMock、针对C++语言有GoogleMock等。json(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。易于人阅读、编写、解析,并能有效地提升网络传输效率。鉴于以上特点,JSON被广泛的应用于系统应用开发中。在本章节,笔者将向大家分别介绍如何应用json-server这款Mock工具来实现Restful风格的API,较应用Django、Flask实现这些API,json-server的实现是如此简单、快捷,相信您一定会喜欢上它。
json-server Mock工具实例讲解
json-server介绍
您可以在github上搜索“json-server”获得这款工具的相关项目信息,如图7-1所示。
图7-1 json Server项目的相关说明信息
如图7-1所示,它可以在不到30秒的时间内在零编码的情况下完整模拟REST API,适合前端开发团队人员小于3人,需要快速后端原型设计和模拟。
json-server安装
首先,您需要下载Node.js,鉴于笔者是64位的Windows 10操作系统,这里下载“10.15.3”
版本,如图7-2所示。
图7-2 Node.js下载界面信息
“node-v10.15.3-x64 .msi”文件下载以后,单击该文件,开始安装node.js,如图7-3所示。
图7-3 Node.js Setup界面信息
单击“Next”按钮,选择“I accept the terms in the License Agreement”复选框,如图7-4所示。
图7-4 用户许可相关界面信息
单击“Next”按钮,选择安装存放路径,这里我们不做更改,如图7-5所示。
图7-5 存放路径相关界面信息
单击“Next”按钮,选择要安装相关功能,这里我们仍然不需要做任何更改,如图7-6所示。
图7-6 用户自定义安装相关界面信息
单击“Next”按钮,进入准备安装Node.js界面,如图7-7所示。
图7-7 准备安装相关界面信息
单击“Install”按钮,则开始安装Node.js,安装完成后,将会出现图7-8所示界面。
图7-8 安装完成相关界面信息
单击“Finish”按钮,完成Node.js的安装过程。为了验证其是否正确安装,可以输入“node –version”命令,来查看其版本信息,如图7-9所示。
图7-9 Node.js版本信息
NPM是随同Node.js一起安装的包管理工具,使用它能够解决Node.js代码部署上的很多问题,我们在后续安装json-server时也会使用到它,所以同样要验证一下npm是否正确安装,可以应用“npm –v”命令来查看其对应的版本信息,如图7-10所示。
图7-10 npm版本信息
由图7-9和图7-10,我们知道Node.js和npm都已经成功安装,接下来,我们就可以使用“npm install -g json-server”命令来装json-server了,如图7-11所示。json-server安装完成后,您可以使用“json-server -h”来查看其是否安装成功,若出现对应的帮助信息,则说明其被正确的安装,如图7-12所示。
图7-11 安装json-server相关命令信息
图7-12 json-server相关帮助信息
json-server应用简要说明
在第5章,笔者详细的向读者朋友们介绍了如何应用Django REST Framework接口实现
Restful风格的接口,在本章节我们将应用json-server实现同样的Restful风格的接口。
这里,笔者准备了一个Json格式文件,即:mytest.json文件,其内容如下所示:
{
"books": [{
"id": 1,
"title": "软件性能测试与LoadRunner实战教程",
"author": "于涌"
},
{
"id": 2,
"title": "精通移动App测试实战",
"author": "于涌"
}
],
"comments": [{
"id": 1,
"content": "性能测试图书",
"postId": 1
},
{
"id": 2,
"content": "App测试图书",
"postId": 2
}
],
"press": {
"name": "出版社"
}
}
从上面的JSON文件,大家可以看到主要包含3类信息,即:图书、评论和出版社信息。
在第5章的案例三,我们用10几页来描述如何实现基于JSON文件增删改查的相关操作。这里,我们想应用json-server来实现基于该JSON文件的增删改查接口操作。那么,我们应该怎样做呢?
首先,创建一个Python项目,这里我们把该项目命名为“APITest”。在该工程中,新建一个JSON文件,即:mytest.json文件,文件内容就是上面的JSON文件内容,如图7-13所示。
图7-13 APITest项目及mytest.json文件内容
接下来,您可以通过使用“json-server --watch C:\Users\Administrator\PycharmProjects\
APITest\mytest.json”命令来运行json-server,这样就创建了一个基于mytest.json数据文件内容的Restful增删改查接口服务了,如果成功的话,将显示如图7-14所示界面信息。
图7-14 启动json-server服务
如图7-14所示,您可以通过在浏览器中输入“http://localhost:3000”来访问其为我们创建的相关接口,如图7-15所示。
图7-15 基于mytest.json数据文件的json-server Home页面信息
如图7-15标号为“2”的区域,我们可以看到json-server支持GET、POST、PUT、PATCH、DELETE和OPTIONS等HTTP方法。标号为“1”的区域,您可以单击对应的链接查看对应mytest.json文件内数据信息。这里以查看图书信息为例,单击“/books”链接,将出现图7-16所示界面信息。
图7-16 mytest.json文件的图书相关信息
您可以通过使用“http://localhost:3000/books?id=1”或者“http://localhost:3000/books/1”来查找或者说过滤出对应id的图书信息,如图7-17所示。
图7-17 过滤查找出id为1的图书相关信息