今天使用jmeter工具模拟2个关联接口自动化测试过程,遇到各种小石子咯脚情况,记录下避免下次继续被咯脚,这里使用这2个上下关联的接口,第1个接口参数化(CSV Data Set Config),对第1个接口响应数据做正则提取器(Regular Expression Extractor),第2个接口关联第1个接口提取出来,对第1、2接口做断言;
从头开始吧:
step1:在【Test plan】测试计划下添加线程组【Thread Group】,可以自行定义线程组的name,路径如下:
step2:在此线程组下添加【Http Header Manger】用于管理这次请求头相关信息,路径如下:
添加请求头信息后点击【Save】;注意别留空格
step3:在此线程组下添加【Http Request Defaults】,记录请求ip和port,方便之后切换环境直接更改这里的请求ip及端口即可;
填写请求协议,ip,port等信息;
step4:在该线程组下添加请求【HTTP Request】,路径如下:
注意添加参数的前2种方式是“二选一”,如果切换的话需要把前一种清空再切换方式,另外复制path时注意不要留空格;这里以body datya为例;
step5:该线程组下添加查看结果树【View Result Tree】,这里是直接加在线程组上的,那就会对整个线程组下的请求接口作用,如果是添加在【HTTP Request】下,那作用域就只对改请求作用;
以上5步完成基础的接口,接下来分别对参数化/正则提取器/关联/断言等场景进行操作,首先第1个接口参数化(CSV Data Set Config)。
①准备参数化数据存在text(较简单)或者excel(另存外为.csv结尾的文件名)中,这里以excel为例;
②为线程组添加CSV Data Set Config,添加变量名等信息;
③在请求中引用变量名,完成参数化;
按照上面的步骤继续进行吧,step1准备数据:
准备好数据后,继续step2添加CSV Data Set Config并设置:
step3实际调用的接口中,通过${}引用变量来实现接口参数化,通过查看结果树里的Request Body的请求参数信息:
继续看如何对第1个接口响应数据做正则提取器Regular Expression Extractor:
①根据查看结果树中返回的响应数据提取所需要的数据并使用正则表达式;
②在接口1 HTTP Request 添加Regular Expression Extractor,并进行设置;
③该线程组添加【Debug Sampler】方便在查看结果树中观测提取器是否提取成功;
首先看①如何提取和填写表达式:
①-step1,通过查看结果树找到需要提取的数据(注意响应结果格式就以默认的text为准即可)
①-step2,确定提取数据的左右边界,然后把需要提取数据用(正则表达)括起来,最后提取出来的正则表达式是"PPID":(.*),"ClueNo"
接下来②在接口1 HTTP Request 添加Regular Expression Extractor,并进行设置
然后③给该线程组添加【Debug Sampler】方便在查看结果树中观测:
接下来继续看第2个接口关联第1个接口提取出来,这个剧比较简单了,在上一步已经把正则提取出来的数据赋值给ppid这个变量了,所以第2个接口只需要引用${ppid}即可;
最后看下对第1、2接口做断言,分别2个【HTTP Request 】下添加【Response Assertion】(注意格式最好用查看结果树text下格式中复制过来,试过json复制调用无效)
报错不可怕,继续排查,,,,反例失败的原因是在断言设置的时候【Field to Test】里的选项错误导致的。
注意:1、注意空格尤其是复制url;2、如果要复制查看结果树中里面的内容注意调整到默认格式;3....其他还有些问题和坑点下次会继续更新。