【SoapUI】2、SoapUI进行API Mock测试分析
来源:互联网 发布:数据录入兼职平台 编辑:程序博客网 时间:2024/05/17 23:31
SoapUI是一个方便进行HTTP/SOAP/REST服务进行测试的软件,可视化的测试数据管理和自动化测试脚本是其亮点。在前文《API白盒测试的利器SoapUI详细教程》进行API测试有详细的说明。其实SoapUI还有一个Mock功能,并不太为人所知。其实依托于SoapUI的可视化数据管理能力,基于Groovy脚本的强大能力,能够很方便地对API的Mock数据进行管理。
一、Mock说明
SoapUI的MockService大体上讲具有如下能力:
支持通过WSDL导入Web service的能力
支持Rest service的能力
支持一个mock动作包含多个mockResponse
支持请求顺序返回mockResponse
支持通过脚本编程控制返回mockResponse
支持各种日志的输出
通过启动mockservice就能够实现一个简单的web输出能力
访问http://localhost:8080/hello就能够看到顺序的结果。
关于Mock更详细的脚本编程说明,请参考文档
https://www.soapui.org/soap-mocking/creating-dynamic-mockservices.html
二、解密Mock实现内幕
在内部SoapUI使用Jetty作为内置的web容器使用,可以将SoapUI的project导出成war部署在web容器中。通过查看war中的web.xml可以看到,统一使用一个MockAsWarServlet作为入口。
<servlet> <description></description> <display-name>SoapUIMockServlet</display-name> <servlet-name>SoapUIMockServlet</servlet-name> <servlet-class>com.eviware.soapui.mockaswar.MockAsWarServlet</servlet-class> <init-param> <description>project file path</description> <param-name>projectFile</param-name> <param-value>WEB-INF/soapui/Project 1-soapui-project.xml</param-value> </init-param> <init-param> <description>enable Web UI</description> <param-name>enableWebUI</param-name> <param-value>false</param-value> </init-param> <init-param> <description>global settings file</description> <param-name>soapUISettings</param-name> <param-value>false</param-value> </init-param> <init-param> <description>set listeners directory</description> <param-name>listeners</param-name> <param-value></param-value> </init-param> <init-param> <description>set actions directory</description> <param-name>actions</param-name> <param-value></param-value> </init-param> <init-param> <description>set scripts directory</description> <param-name>scripts</param-name> <param-value>WEB-INF/scripts</param-value> </init-param> <init-param> <description>set MockService endpoint used in generated WSDLs and schemas</description> <param-name>mockServiceEndpoint</param-name> <param-value>/mock1</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SoapUIMockServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
然后,在WEB-INFO/soapui下有脚本和页面描述,是统一使用一个xml进行描述的。
Groovy脚本的执行调用栈如下:
SoapUIGroovyScriptEngine.run() line: 84
ScriptMockOperationDispatcher.selectMockResponse(MockRequest, MockResult) line: 87
RestMockAction.dispatchRequest(RestMockRequest) line: 135
RestMockDispatcher.getMockResult(RestMockRequest) line: 74
RestMockDispatcher.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 49
WsdlMockRunner.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 142
MockAsWarServlet$MockServletSoapUICore.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 247
ScriptMockOperationDispatcher.selectMockResponse(MockRequest, MockResult) line: 87
RestMockAction.dispatchRequest(RestMockRequest) line: 135
RestMockDispatcher.getMockResult(RestMockRequest) line: 74
RestMockDispatcher.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 49
WsdlMockRunner.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 142
MockAsWarServlet$MockServletSoapUICore.dispatchRequest(HttpServletRequest, HttpServletResponse) line: 247
三、总结
总体SoapUI使用了web开发作为mock框架,通过加载groovy脚本实现的脚本执行。利用好SoapUI的可视化数据组织能大大降低mock的难度,同时对于有基本web开发能力的测试人员,上手mockservice还是比较容易的,mockRequest类似于HttpRequest。从细节上感觉要从头写一个groovy脚本还是有一定困难,主要的难度是各种对象的属性和方法的说明,调试以及mock场景的整体组织。
阅读全文
0 0
- 【SoapUI】2、SoapUI进行API Mock测试分析
- soapui mock数据测试
- 使用SoapUI mock REST API
- soapUI mock sevice
- soapui中文操作手册(三)----使用SoapUI进行负载测试
- soapui中文操作手册(三)----使用SoapUI进行负载测试
- SoapUI 测试REST API(接口测试)
- Soapui
- SoapUI
- soapUi
- SoapUI
- SoaPUI
- soapui
- SOAPUI
- 使用SOAPUI对WEBSERVICE进行性能测试
- 使用SOAPUI对WEBSERVICE进行性能测试
- 使用soapUI进行webservices性能测试
- soapui+groovy进行接口自动化测试浅谈
- mtk 平台 CAMERA 驱动浅析
- 这些人都在使用超级表格
- ListView 侧滑删除
- vue的单向数据流和双向绑定解释
- BZOJ 3123 LCA + 主席树 + 启发式合并
- 【SoapUI】2、SoapUI进行API Mock测试分析
- 字符串排序
- 变量本质分析
- linux 下文件的创建时间、访问时间、修改时间和改变时间
- GLSL 转UnityShader
- mongoDB的入门
- xss攻击方法简单介绍了解
- Android4.4以上Uri转换成绝对路径的工具类
- Ubuntu安装Tomcta