一、JMeter变量
JMeter变量是指在JMeter运行过程中产生的变量,只有JMeter运行时才能起作用
1、使用JMeter变量的作用有:
进行快速环境切换
参数化测试过程(就是用变量代替要测试的数据,参数化能让数据得到集中处理,提高测试效率)
2、定义变量的方式
用户自定义的变量
用户参数
CSV配置元件
JMeter函数
BeanShell
3、引用变量的方式
除了测试计划和注释以外,在JMeter的任何位置都可以通过${变量名}的方式来引用用户定义的变量
4、引用变量
5、案例:切换GreaterWMS的环境
通过修改测试计划下的用户定义的变量的变量值,即可完成测试
切换host
6、案例:测试平台登录案例
不采用参数化的方法发送请求
使用参数化的方式,发送请求
二、JMeter属性
JMeter属性也是一种变量
1、JMeter属性特点
JMeter属性全局生效,能够跨线程组
JMeter属性中,默认读取的是jmeter.properties配置文件中的属性
设置JMeter属性后,在当前的JMeter窗口中,会持续生效
2、JMeter属性和变量的区别:
定义方式和使用方式不一样
JMeter属性默认全局生效,JMeter变量默认局部生效
特例:JMeter变量中,如果使用的定义方式是:用户自定义变
量,那么这个变量是全局生效的
JMeter变量是局部变量,Jmeter属性是全局生效的属性
3、定义JMeter属性的方法
a、在配置文件中定义:JMeter属性默认读取的就是jmeter.properties中的属性配置
配置文件定义属性后,需要重启JMeter才会生效
b、在JMeter运行过程中,通过JMeter函数${__setProperty(属性名,属性值,)}来定义
4、引用JMeter属性的方法
通过JMeter函数${__P(属性名,)}引用
设置JMeter属性后,在当前的JMeter窗口中,会持续生效,只有关闭当前jmeter窗口后才会失效
5、JMeter变量转化为JMeter属性的方法:
${__setProperty(属性名,JMeter变量的引用表达式,)
6、跨线程组调用JMeter变量的方法
用户自定义的变量
把JMeter变量转化为JMeter属性,就能跨线程组调用了
第一步:在线程组1通过JSR233来设置JMeter属性和JMeter变量,
设置方法,编写简单代码:vars.put(“message”, “这是设置变量”);和props.put(“message”, “这是设置属性”);
第二步:在线程组2调用线程组1定义的变量,会发现无法调用,因为无法跨线程组调用变量
第三步:在线程组3调用线程组1定义的属性,会发现可以调用,因为JMeter属性是全局生效的
线程组2没有获取到线程组1设置的变量,
说明vars.put设置的是JMeter变量不是JMeter的属性
在线程组1定义的变量message1,在线程组2中去引用,发现无法引用,原样输出了表达式
在线程组1设置的JMeter属性,可以在线程组3中使用
证明jmeter属性可以跨线程组使用
jmeter属性具备全局特性
jmeter变量只是局部生效,只在当前的线程组内生效,跨线程组不生效
三、JMeter调试取样器
调试取样器可以显示JMeter变量、JMeter属性、System属性
操作方法:
对线程组右键->添加->取样器->调试取样器
界面为:
如果要查看我们设置的JMeter属性和变量,那么
第一步:添加调试取样器
第二步:运行
第三步:在查看结果树中,点击调试取样器的报告,查看调试取样器的响应数据,它的响应数据会显示我们设置的JMeter属性和变量
注意:JMeter调试取样器只能显示运行它之前的变量
系统属性:
JMeter系统属性对应system.properties中的属性
1、JMeter 非测试元件:属性显示
可以修改属性