一、用户定义变量
1.用户定义变量,有两个地方可以配置:
a.配置元件中添加
b.测试计划添加
2.引用:${变量名称}
3.如果在查看结果树发现有${变量名称}说明变量没有取到值。字符串类型引用需要"${变量名称}"。
4.注意点:a.命名规则使用英文不要用中文
b.可以包含数字,但不要以数字开头
c.大小写敏感
5.特点:a.用户定义变量是全局变量,所有线程组都可以直接使用
b.在启动时获取一次值,运营过程中不在获取
另外:线程组是并行或者串行的,后面执行的线程组中挂在的变量会覆盖前面的值,两个线程组中都有用户定义变量,不一定哪个先执行。
------------------------------------分割线-----------------------------------
二、用户参数
1.添加:取样器右键前置处理器,线程组右键前置处理器
2.特点:a.是一个局部变量,不能跨线程组使用,只能在当前线程组使用
b.用户参数在启动时获取一次值,在运营过程中依然会动态取值
另外:每次迭代更新一次选项;当前线程组下所有取样器执行完一次为一次迭代。比如用户调用接口注册后登录,就要勾选次选项,登录可以用前面注册的号码。
jmeter支持的常见语言:Java, jython, groovy, js
------------------------------------分割线-----------------------------------
三、函数使用
1.两大类函数:内置函数,第三方函数
2.注意点:a.以双下划线开头
b.严格区分大小写
c.变量之间用逗号隔开
3.常用函数:随机字符串,随机日期,当前时间,时间戳转本地时间函数,groovy函数,Counter函数,jexl3函数(可以进行浮点型计算),P/propert函数(都是获取函数属性),Setpropert函数(设置属性)
V函数(拼接函数)。
4.V函数使用方法
拼接函数,想循环使用递增规律的变量,要用v函数
举例使用:
${mb_${_counter(,)}},连接成一个字符串,认为是一个变量的名,没有这样一个变量名所以无法取到值,想让这个函数生效,要使用V函数
${_V(mb_${_counter(,)},)},得到mb1 mb2 mb3
5._count函数,一直递增,一次加一,没有最大值
6.计数器:开始值,递增值,最大值
计数器属于配置原件,优先级最高,和放的顺序没有关系。从开始值递增,使用时当结果超过最大值时,再从第一个值开始。
------------------------------------分割线-----------------------------------
四、获取响应结果,对响应结果处理
第一种使用json提取器
1.Json提取:响应结果为json格式,优先使用json提取器。属于后置处理器,可以添加调试取样器查看取值结果。
2.使用方法:
第一种写法:$.节点名称.节点名称。从根节点名称开始取,绝对路径写法。
Apply to:
Main sample and sub-sample从主节点和子节点提取
Main sample only仅仅从主节点取值
jmeter Variable name to use从已有结果中再次提取结果
Match to匹配次数,提取次数
0 代表随机取一个
1-任意数字, 代表取对应值
-1 代表获取所有结果值
注:一个Json提取器中提取多个值时,每个值之间用分号隔开,默认值一定要填写null,提取几个值就要写几个null用分号隔开。
提取到的多个值,以组的形式展现,可以在调试取样器中看到结果。
第二种写法:$..节点名称。属于相对路径的写法。
***************************内部分割线************************************
第二种使用正则提取器
1.正则提取:响应结果不是Json,或者想提取的信息不在response body中,就要用到正则。
2.使用方法:左边界(正则式)右边界
3.万能正则表达式:(.*?)除换行符外,都可以匹配
(\d+)匹配全部数字
(\w+)匹配全部英文
要检查的响应字段:主体对响应结果检查
模板:$1$
匹配数字:0
注:一个正则提取器中提取多个值,每个提取式中间用(.*?)隔开;模板使用$1$$3$,意思是使用提取式中的一号位置和三号位置的提取式;如果写一个变量名相当于把两个提取式的结果存储到一个变量中,使用时可以找到调试取样器中的正则提取结果,找到对应的值,再引用。
关联:前一个请求的响应结果,是动态值,这个值作为后续接口的传入参数,就要用到关联,可以使用json提取或正则提取。。