在 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,之后通过断言来比对每笔报文的预期和实际结果,实现批量比对的功能
1、JSON 数据量较小,方便结构化到 CSV 文件时,直接将 JSON 数据放到 CSV 中对应位置,后引用使用
导入 CSV 到场景变量中,设置是否允许带引号为 True
请求体引用 JSON 数据,进行接口请求
2、JSON 数据非独立存在文件 JSON 数据量较大,不方便结构化到 CSV 文件时,CSV 文件中 json_file 一栏可填写为文件名称,然后通过脚本解析得到 JSON 文件内容
可在 CSV 文件中添加一列,指定该条数据要读取的 JSON 文件
将 JSON 文件上传到服务器 /opt/metersphere/data/json 目录下
可在请求的前置脚本中写入读取 JSON 文件的 Python 脚本,并将读取到的内容存储为 body
在请求体里可直接引用 ${body} 即可
点击运行正常发出请求,在请求内容处能看到发送的参数为 JSON 文件内容。
*******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,用法为 ${__FileToString(/opt/metersphere/data/json/15.json,,)}
函数使用示例见下图:
标签:opt,文件,json,JSON,file,MeterSphere,CSV From: https://blog.51cto.com/u_15922911/6019333