Service mocking 是一个特别流行的概念,开发和测试人员经常会遇到这个词。
那什么是Mocking呢?
“Service Mocking, or simulation, is the practice of creating a facsimile environment that works similar to the environment you’re facsimileing”.
也就是说它是在你因为各种情况不能使用到真实服务的时候,应该去使用的东西。
SoapUI是一个经常用来做接口测试的工具,它有开源版本和商业Pro版本两个版本可以使用。(https://www.soapui.org/)
接口测试里面经常遇到的两种风格的接口是:
- SOAP webservice
- REST API
因为现在RESTful的接口比较流行,下面我们以REST API Mocking为例子来看一下SoapUI里是怎样使用的:
MockService模型
MockServices通过暴露任意数量的MockActions来提供模拟服务,每个MockActions可以包含任意数量的配置的MockResponse消息:
- MockService
- MockAction
- MockResponses
SoapUI中的MockService可能如下所示:
- MockResponses
- MockAction
在此示例中,MockService包含两个操作,一个GET和一个POST。 如果我们打开POST操作,我们可以看到它包含三个的响应:
该操作显示方法和资源路径,以及所有MockResponses的列表。 在这种情况下,调度设置 - “序列” - 表示当mockservice收到请求时,响应将按列出的顺序使用一次(Sucessful->Already Existing User->Internal Server Error),然后从头开始。
看“Successful”的回应:
MockResponse包含将为请求返回的可配置信息:HTTP状态代码,要包括的任何自定义标题信息和响应体。 脚本和相关设置的标签位于底部。
Content | Media type还有以下的其它格式,这个可以自己 依据要模拟的接口来选择。
- application/json
- application/xml
- multipart/form-data
- multipart/mixed
安装SoapUI的时候同时会有一个SoapUI-Tutorials目录,在这个目录里面有一些例子,比如要想看一个REST API测试项目时,在菜单栏File->Import Project中选择目录下的Sample-REST-Project-soapui-project.xml文件,此时界面上会看到导入的REST API测试项目:
在已有的测试的项目中创建一个模拟服务从现有的服务是非常简单的。
右键单击 服务
选择 生成模拟服务
打开一个对话框窗口。
输入一个描述性的名称。
点击 OK。
总的来说,SoapUI的Mock server对于不懂代码的人来说还是一个比较好用的Mock模拟工具,不过如果会代码的人我还是推荐自己上手写吧,毕竟很多参数的调整和接口的加密要求等等更顺手一些。
比如Python中的另一个Mock库,参见:[Python中好用的第三方mock库-httmock](http://www.jianshu.com/p/21597fc00fee)