jmeter接口测试之读取CSV文件和把测试结果导出
2026/7/4 3:28:13 网站建设 项目流程

最近测试一个知识库项目,核心大概是利用AIGC给用户在特定场景下提出一些处理建议。这部分建议细分到不同类型在某些领域有固定的结果,需要测试这部分结果是否符合预期。

一、工作场景:

产品给了一个excel,有详细的不同类型和预期输出的结果。AI是调用其他部门接口,需要验证返回的结果里面某个部分是不是excel既定的内容。

二、测试思路:

1.先把接口调通,在参数化数据
2.把excel文件转变成CSV文件,用jmeter的CSV数据文件处理将字段提出来,逐条请求对比结果。
2.结果返回的是json格式,可以用json提取器找到需要测试的部分。
3.如果可以用json提取器提到想要的数据,那么断言就可以直接用json断言比较预期结果和实际结果。
4.异常部分需要导出来给开发,需要导出数据,计划用查看结果树的文件导出功能。

二遍: 第二步不需要,可以直接在查看结果树用json格式测试就行

三、具体执行

1.新增测试计划→线程组→http请求/请求默认值/等等需要的工具,如下(灰色的可以忽略)

2.导入想要的文件

CSV数据文件处理。
在配置元件里新增CSV Data Set Config

文件编码我最开始用的utf-8,结果执行以后有乱码,改成GBK就正常了。看了下原因是因为文档有中文导致的。
我的首行是变量名称,忽略首行改成了True。
其他都是默认配置。

3.json提取器提取响应结果(用来测试提取的对不对,可以跳过)

我这边拿到的响应结果是json格式,

{"code":"SUCCESS_REQUEST","success":true,"message":"请求成功","data":{"success":true,"code":0,"msg":"success","data":{"suggestList":[{"smartRepairAdvice":"xxx""suggestedTools":"xxxx""priority":xxx,"errorType":"xxx"}]}}}

我想要拿到的是smartRepairAdvice字段,直接一层一层的找下去,最外层是data,data里还包着一个data,然后下面是suggestList,这里进来就是一个字典,我的数据在第一个,所以角标[0],然后取的字段是smartRepairAdvice,因此json提取写作$.data.data.suggestList[0].smartRepairAdvice
json提取器是我用来测试提取的数据对不对,如果很自信可以直接写在json断言里。

二遍:更方便的办法:在查看结果树里调试就可以,如下图


$.data.data.suggestList[?(@.priority==‘1’)].smartRepairAdvice 不知道在哪个字典取,找到想要的固定字段里面去找。
$.data.data.suggestList[0].smartRepairAdvice 指定第一个字典里面取值

4.用json断言比较预期结果和实际结果。

刚刚已经测过这个表达式可以提取到我想要的返回结果,和excel里对应的数据作比较。

${RepairAdvice}是我csv文件里定义的预期结果。

5.把结果导出来

在监听器里新增察看结果树,

在文件名录入想要存储的位置。
测试阶段需要把错误信息发给开发人员,所以这里我只打印了错误日志。
如果想要做测试总结,可以不勾选,不勾选则默认全部。

想要导出的内容可以点击配置。勾选自己想要的内容就行。我这里需要把错误的请求参数,和断言的内容导出,所以勾选如下内容。

根据不同需求,勾选不同选项,下面是选项解释:

--AsXML:保存为xml格式----ElapsedTime: 请求的消耗时间,从请求发送到接收完毕全程耗时(经常用)----Responsemessage:默认值:ok----Success:成功标识,true/false----SentByteCount:发送数据量的总和----ResponseFilename:响应文件名----esponseFileclass,响应数据文件的类。值是java lang string----Encoding:编码格式----IdleTime:空闲时间,闲置时间----ResponseHeaders:响应头----AssertionResult:断言的结果----FieldNames(CSV):字段名,只在csv文件中有效----Label:线程组名称----ThreadName:线程数名称----AssertionFailureMessage:断言失败的信息----ActiveThreadCounts:执行线程的总数----Latency:延迟时间,表示请求发送到刚开始接受响应时间----SampleandErrorCounts:请求成功和失败的总数----Requestheader:请求头----ResponseData:响应信息----TimeStamp:时间戳----ResponseCode:服务器响应码,200表示成功----DataType:数据类型----ReceivedByteCount:接收数据量的总和----URL:链接信息----ConnectTime:请求建立连接的时间----Hostname:保存主机名----SamplerData:请求信息,会打印请求方法(get/post)和cookie----SubResults:子结果

四、可能遇到的问题

1.在用json提取器的时候,不知道自己提取的对不对,这时候可以用取样器的Debug工具进行调试。新增此工具,每次执行完在查看结果树里会打印变量的具体值,在这里可以查看是否是想要的值。

2.导出时,执行线程组就会在目标路径下生成一个xml文件,但是这个文件直接用浏览器打开看起来非常的不方便。
打开提示This XML file does not appear to have any style information associated with it. The document tree is shown below.

这时候,不用过于纠结格式问题。直接新建一个excel表格,把xml文件拖进去。就会发现整个文件格式变得清新直观了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询