
node.js + express + docker + mysql + jwt 实现用户管理restful api
接口还没有开发好,现在测不了;测试系统有多个接口,测试环境没有配置好,还无法开展测试执行;这个功能到底哪里出错了,不好说,接口太多,要一个一个调试……
孤立的应用程序变得越来少了,做起API 的测试需要多方面协调,环境的配置、数据的准备、测试场景的设计以及提交缺陷时的出错信息的准确度等诸多因素都在影响着测试计划、测试进度、测试结果。
今天我们就学习搭建一个API Mock Server ,利用它来做API或功能方面的测试,从而使被测试对象功能独立出来,这样既可以在外部接口还没有完成时,就提早介入测试,争取测试时间,又可以使被测试对象简单化。
一旦外部接口开发完成,系统进行集成测试时,如果出错,就可以快速的定位到问题原因。
如果您要按示例一起做,请务必配置如下工具 ,示例主要是介绍Mock server 与Maven 的集成,利用TestNg 与 Rest-Assured 做API 自动化测试。
对于不了解TestNg 与Maven,Rest-Assured 的小伙伴们可能需要做点相关功课 (示例中没有给出详细的配置与使用步骤):
1. Mock Server 服务器 Maven 配置
2. 创建API Expectation
3. Mock Server 启动
4. Mock Server UI 监控
5. API自动化测试:Rest-Assured
创建一个Maven项目,在pom文件里添加对应的mockserver dependency。
API 服器功能描述:
1. API服务器接收一个对用户列表的 get()请求
2. 以Json 文件格式返回对应的用户列表
目标明确了,现在需要做的就是:
创建一个json文件,存放用户列表。这里只是为了学习,所以数据准备的并不复杂。
Expectation的意思就是告诉服务器当接收到请求时,响应相关的数据。通过Expectation定义相关请求的规则,与响应的规则。
比如:本例中当请求userList链接 get()方法时,就返回以Json格式的用户列表。
注意:这里的用户列表我们单独放在一个Json文件里,以方法getPayloadString() 读取后作为变量被Expectation调用。
目的主要让代码变得简洁、易读。数据存放在文件里也方便测试的修改与维护。
在pom文件里,配置Rest-Assured的dependency。
创建MockServerTest文件,在测试用例执行之前,需要先启动Mock Server:
依据Expectation定义的规则,服务器启动设置后,当用户请求“http://localhost:10800/userList”,API Mock Server返回以Json格式的用户列表 。
示例中验证了:
运行测试以后,从结果中我们可以看到测试是失败的。从运行的 log中看出:
现在我们在上面的测试用例中加一条等待语句 Thread.sleep(1000000)。
这里主要以学习为目的,最好给的等待久一点。我们详细看一下Mock Server的日志。
这次运行测试,在执行完第一条打印语句以后,程序一直处于运行状态。
通过浏览器访问:http://localhost:10800/mockserver/dashboard
Mock Server Dashboard显示如下:
通过点击creating expectation旁边的展开符号,可以详细的看到刚才准备的expectation的规则与响应。
示例一:
现在我们发送一个正确的请求通过Jmeter,如图所示:Jmeter中会返回响应的用户列表。
记录Request Received会同时出现在Log Messages、 Received Requests列表里,通过展开记录可以详细看到Request与Response。
示例二:
给出这样一个没有对应Expectation的请求时,Mock Server会返回响应代码404。
但是在Log Messages里可以看NO_MATCH_RESPONSE的记录。展开可以看到Request与Response的详细信息。
这次主要是介绍Mock Server与Maven集成做API自动化测试的示例,以供大家参考。
另外Mock Server支持其它配置方式,如: Docker、独立服务器等以适应各种不同测试环境下的要求。Mock Server Dashboard随时记录下Request与Response信息,是很好的调试工具。
但是,Mock Sever也并不是万能的,比如Mock Server 没有自己的数据库,也就是指所有的Expectations都是存储在内存的,因此要求动态数据的场景,相比较有自带数据库的API Server,Mock Server 就有点差强人意了。
总之,一切要以实际测试环境为依据,每一个工具都有优点与缺点。
我始终坚持测试的终极目的不是比拼大家会用什么测试工具、会用什么语言。测试人员灵活掌握工具与语言是为了测试过程更简约、更快捷。
好了,希望这些介绍能帮助到您的测试,有不足之处也希望大家多多提建议,共同进步。
node.js + express + docker + mysql + jwt 实现用户管理restful api
nodejs + mongodb 编写 restful 风格博客 api
表格插件wpDataTables-将 WordPress 表与 Google Sheets API 连接
手把手教你用Python和Flask创建REST API
使用 Django 和 Django REST 框架构建 RESTful API:实现 CRUD 操作
ASP.NET Web API快速入门介绍
2024年在线市场平台的11大最佳支付解决方案
完整指南:如何在应用程序中集成和使用ChatGPT API
选择AI API的指南:ChatGPT、Gemini或Claude,哪一个最适合你?