JMETER接口测试---后置处理器(json提取与正则表达式提取)
一、jmeter的请求默认值
1、当请求接口有多个时,可设置http请求默认值,默认一个请求接口,若接口改变,只需修改一个请求接口即可,如下图所示: 2、当请求接口多个,且不同类型请求接口的请求头不一致时,可添加测试片段,来区分不同类型的接口请求,且每个测试片段下,都有不同的请求头。如登录时的请求Content-Type为application/x-www-form-urlencoded,但其他接口请求时为application/json,导致接口一直报错。如下图所示二、jmeter的后置处理器
后置处处理器:json提取和正则表达式的使用 这两者都可提取需要的返回参数,作为下一个接口中的参数是使用,如登录后返回一个token值,之后的请求需要带上该请求参数,如下图所示,登录返回一个data,之后的请求头中都需带上该数作为token值a、json的提取
创建一个json提取器,如下图所示 配置参数,然后将配置的参数,使用${token}格式放在需要的位置,token为自己取得变量名称,可随意。因后续的查询,修改,都需带上token值,因此在后续的请求头中都需要配置动态的token参数提取参数时,可在返回结果中测试,如下图,在查看结果树中,将结果修改为json返回格式,然后在json path expression中设置提取的数据,如下图所示,未不同json的提取值示例:
$.data.records[0].code:为提取第一个列表中的code值。若需要修改,删除的接口,则可提取参数中的id值,使用${id}格式,动态传入id值,实现新增,修改的接口测试 b、正则表达式的提取 创建后置处理器:正则表达式 配置提取的返回数据:"data":"(.*?)" 正则表达式: ():括起来的部分就是要提取的内容; .:匹配任意字符串; +:匹配一次或多次;*:匹配0次或多次 ?:不要太贪婪,在找到第一个匹配项后停止匹配。 模板: $1$:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值三、jmeter函数
1、${__CSVRead()}:文本读取:可用于登录账户密码成对出现的情况,或新增,修改时部分字段为下拉框的情况;如下图,设备新增为下拉框选项: 新建一个文本写入下列字段,数据库中保存的为英文,则要写入对应数据: 选择函数助手框: 在新增接口参数列表中进行配置,即可随机选取不同下列列表若是登录用户与密码格式,则如下图所示:
a、第一列为username,第二列为对应的password,中间以逗号隔开,比如 username1,password1 username2,password2 username3,password3 username4,password4 username5,password5 b、http请求时参数化username和password 帐号的value为${__CSVRead(D:\jmeter\logins.txt,0)}, 密码的value值替换为${__CSVRead(D:\jmeter\logins.txt,1)}