【最佳实践】MeterSphere 接口自动化 CSV 整合 JSON 文件


Administrator
飞致云 发布于 2023-01-12 / 952 阅读 / 0 评论 /

在 ToB 系统的业务场景中,经常有厂家需要将原始 JSON 数据,用于请求体传参,或者响应体对比等业务场景。对应 Metersphere 中接口自动化,CSV 数据驱动数据包含 JSON 结构内容,用于接口测试时,请求体引用和响应体对比。

测试步骤分析:

  1. 创建场景,导入包含 JSON 数据的 CSV(包含 header 和若干行预期结果)
  2. 获取JSON数据后,正常引用变量测试或断言

注: 如果 JSON 数据非独立存在文件 JSON 数据量较大,不方便结构化到 CSV 文件时,建议 CSV文件中 json_file 一栏可填写为文件名称,然后通过脚本解析得到 JSON 文件内容

如果 JSON 数据 JSON 数据量较小,方便结构化到 CSV 文件时,建议直接将 JSON 数据放到 CSV 中对应位置

使用场景:
通过CSV批量设置多笔报文的输出结果,然后读入多笔报文去调 API,之后通过断言来比对每笔报文的预期和实际结果,实现批量比对的功能

JSON 数据量较小,方便结构化到 CSV 文件时,直接将 JSON 数据放到 CSV 中对应位置,后引用使用
1-1673505005642

导入 CSV 到场景变量中,设置是否允许带引号为 True
2-1673505043814

3-1673505074544

请求体引用 JSON 数据,进行接口请求
4-1673505259558

JSON 数据非独立存在文件 JSON 数据量较大,不方便结构化到 CSV 文件时,CSV 文件中 json_file 一栏可填写为文件名称,然后通过脚本解析得到 JSON 文件内容

可在 CSV 文件中添加一列,指定该条数据要读取的 JSON 文件
5-1673505337493

将 JSON 文件上传到服务器 /opt/metersphere/data/json 目录下
6-1673505386480

可在请求的前置脚本中写入读取 JSON 文件的 Python 脚本,并将读取到的内容存储为 body
7-1673505423329

在请求体里可直接引用 ${body} 即可
8-1673505467023

点击运行正常发出请求,在请求内容处能看到发送的参数为 JSON 文件内容。
9-1673505530546

10-1673505560300

Python 读取 JSON 文件代码如下

import sys
import io
#注意:此路径容器内部的映射路径,为固定值
sys.path.append("/opt/metersphere/data/python/lib/python2.7/site-packages")

file = "/opt/metersphere/data/json/{}".format("${json_file}")
log.info("===111==="+file);

with io.open(file,'r',encoding='utf-8') as f:
    body = f.read()
    
vars.put("body",body);

Beanshell 读取 JSON 文件代码参考如下

 String fileName = "/opt/metersphere/data/json/15.json";     
 BufferedReader buffer = new BufferedReader(new FileReader(fileName));     
 long length = 0;     
 String lines ="";     
 String line = "";     
 while ((line = buffer.readLine()) != null) {         
     length += 1;         
     lines+=line + "\n";       
 }     
 log.info("打印文件行数"+length);     
 log.info("打印文件内容"+lines);

读取 JSON文件最快的方式是使用 JMeter 函数 FileToString,用法为 $

函数使用示例见下图:
json文件读取



是否对你有帮助?