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

MeterSphere · 2023年02月07日 · 3752 次阅读

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/)下载获取。

  1. 点击文件后面的 “查看” 按钮,会展示出文件的详细信息。需要开启 “加载 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 包,完成对响应数据的解密、加密等)。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册