在MeterSphere的Mock服务中通过后置脚本使用HttpClient

发布于 2023年02月07日

MeterSphere开源项目组近期了解到了这样一个用户的真实使用场景:

 用户的被测系统在运行过程中需要访问第三方系统,使用MeterSphere的Mock服务接口来充当第三方系统的角色;

 用户对第三方系统有要求,返回数据时还需要通过Http请求查询“第四方系统”。

这种场景对Mock服务的要求比较特殊,返回内容是个变量,同时具体内容需要通过Http请求来获得。

MeterSphere开源持续测试平台在“接口定义”功能中支持对接口进行Mock设置,即MeterSphere可以作为Mock Server,通过对参数进行模糊匹配或精确匹配,返回设置好的响应内容。

MeterSphere的Mock设置中有“后置脚本”功能,此功能可以通过脚本语句进行一些变量数据的计算,在后置脚本中引入HttpClient(可以发送Http请求的工具包),可以实现以上场景。本文主要分享了在MeterSphere开源持续测试平台的Mock服务中通过后置脚本使用HttpClient的具体操作。

如下图所示,最终的设计就是在用户请求MeterSphere平台并匹配到对应的Mock期望后,在后置脚本中向“第四方系统”发送查询请求,并获取查询结果。

一、在Mock后置脚本中使用HttpClient的前置条件

在Mock后置脚本中使用HttpClient,需要先在“项目设置”→“文件管理”模块中上传Jar包,并开启使用。Mock后置脚本和接口定义、接口场景的后置脚本不同。前者运行在MeterSphere主服务中,而后者是在JMeter的环境中运行的。前者的运行环境中没有HttpClient依赖的第三方包,所以需要用户在“文件管理”模块中手动上传Jar包,并开启“加载Jar包”选项。

1. 在MeterSphere平台中选择“项目设置”→“文件管理”模块,上传HttpClient相关的Jar包文件;

这里需要使用的“commons-lang-2.5.jar”、“httpclient-4.5.13.jar”、“httpcore-4.4.15.jar”Jar包, 都可以在MAVEN Repository仓库(https://mvnrepository.com/)下载获取。

2. 点击文件后面的“查看”按钮,会展示出文件的详细信息。需要开启“加载Jar包”选项。

二、脚本编写与参数赋值

满足前置条件后,在编写Mock期望时,可以通过“后置脚本”按钮,添加“后置脚本”文本输入框。在文本输入框中编写相关请求与返回代码。

以下为演示代码(可以根据具体使用场景进行修改):

同时Mock期望中的返回值取值方式如下图所示,选择和响应数据匹配的数据格式(下图中因为返回内容是普通字符串,所以选择“raw”选项)。

在编写脚本时需注意以下四点:

 脚本编辑器中要将使用的第三方工具类引入进来,如演示代码开头的import org.apache.http.util.EntityUtils等多行操作;

 确保脚本使用的工具类所在的Jar包已经在本项目的“文件管理”模块上传,并开启了“加载Jar包”选项;

 最终结果要加入vars参数池,例如演示代码中的第26行代码vars.put("httpReturnMsg",content)。其中httpReturnMsg是自定义的Key,用于取值;

 在响应内容里使用${key}来获取后置脚本中放入的数据,如上图中的${httpReturnMsg}httpReturnMsg是上一点提及的自定义Key)。

三、总结

在MeterSphere开源持续测试平台的Mock后置脚本使用HttpClient,是使用第三方Jar包编写Mock期望的其中一种实现。除了使用HttpClient之外,还可以上传其他的Jar包实现其他的需求(例如通过加解密Jar包,完成对响应数据的解密、加密等)。