(一)从CSV文件读取要批量输入的变量

1.使用组件:配置元件->CSV Data Set Config

2.组件位置:放在所服务请求前

3.组件说明:

jemeter Get请求路径中动态参数 jmeter动态参数传递_正则表达式

  • 文件名:指向CSV配置文件的路径(包含文件名)。
  • 文件编码:CSV文件默认的编码是UTF-8。
  • 变量名称:和CSV的列相对应,名称自定义(没有拿中文当变量的说法)
  • 忽略首行:通常情况下,CSV的文件首行标注数据的含义,所以要设置忽略,如果不忽略的话,就从第一行来读取。
  • 分割符:默认的英文逗号
  • 是否允许带引号:字面意思,如果你的CSV中是有JSON数据,或者带有引号的数据,建议设为True
  • 遇到文件结束符再次循环:字面意思,一般情况下读取所有数据之后就可以结束了,如果是想重复利用数据,这里可以设置为True,多次循环。(操作的数据不是线程)
  • 遇到文件结束符停止线程:字面意思,配置文件读取完毕之后,就结束当前线程。(操作的线程)
  • 线程共享模式:看想让这个CSV数据文件作用范围是哪里。

4.变量引用

JMeter产生变量的方式有很多种,但是引用变量的方式只有一种: ${变量名}



例如:上面的CSV读取产生的变量名:login_name

引用的时候就是:

${login_name}

5.实例

添加变量:

jemeter Get请求路径中动态参数 jmeter动态参数传递_正则表达式_02

引用变量:

jemeter Get请求路径中动态参数 jmeter动态参数传递_数据_03

(二)利用Cookie进行值的传递

(三)利用正则提取器/json提取器提取上一个接口的返回数据作为下个请求的输入

一、正则提取器

1、正则提取器组件说明

jemeter Get请求路径中动态参数 jmeter动态参数传递_CSV_04

  • 引用名称:存储匹配结果的变量名称,可以是一个值也可以是一组值
  • 正则表达式:匹配的正则表达式,正则表达式里面可以有多个正则
  • 模板:正则表达式提取器类型,样式为:$n$,模板可自由组合,拼接组成新的字符串内容。
  •  模板为$0$,则为整个表达式匹配到的内容;
  •  模板为:$1$,则对应正则表达式中的第一个小括号内()匹配的内容;
  •  模板为$2$,则对应正则表达式中的第二个小括号()匹配的内容;
  •  模板为$1$$2$,则把2个()所匹配的内容拼接起来,$1$aa$2$拼接两个变量的内容,并在中间加上aa
  •  匹配数字:-1代表取全部数据,0代表随机取值,1代表取第1个数据,2代表取第2个数据
  •  缺省值:找不到匹配时的值

2、实例

①添加组件

jemeter Get请求路径中动态参数 jmeter动态参数传递_变量名_05

 ②设置组件

jemeter Get请求路径中动态参数 jmeter动态参数传递_正则表达式_06

 ③引用变量

jemeter Get请求路径中动态参数 jmeter动态参数传递_数据_07

二、json提取器

1.json提取器组件说明

jemeter Get请求路径中动态参数 jmeter动态参数传递_数据_08

  •  变量名:存储提取的变量名字
  •  Json Path Expressions:Json Path 表达式
  •  Match Numbers: 匹配的数量,0代表随机获取,1代表获取第1个数据,-1代表获取所有数据
  •  Compute concatenation var (suffix_ALL):是否统计所有,即将匹配到的所有值保存为变量_ALL。
  •  Default Values: 没有匹配值时的提示信息
  • Json Extractor 提取到的值会存储在变量里,使用方法和普通变量一样,通过${}引用Json Extractor 的变量即可。Json Extractor存储的变量名是基于提取器中变量名称扩展的,建议通过添加DebugSampler获取Json Extractor实际存储值的变量名。

2.实例

①目标数据

jemeter Get请求路径中动态参数 jmeter动态参数传递_正则表达式_09

②添加组件

 

jemeter Get请求路径中动态参数 jmeter动态参数传递_变量名_10

 ③配置组件

jemeter Get请求路径中动态参数 jmeter动态参数传递_正则表达式_11

 ④引用参数

同线程引用

跨线程引用

1. 传递变量说明

1.1 传参方式

现在大家在用自己公司的接口做操作的时候需要传递token,很不方便,所以把传递token的打卡提到前面,可能有点难度,慢慢来,有问题留言或者到星球提问,需要用到beanshell解释器

1.1.1 内置变量



//同线程组

vars :操作 jmeter 变量,它是测试用例与 BeanShell 交互的桥梁,常用方法:

vars.get(String key):从jmeter 中获得变量值

vars.put(String key,String value):数据存到 jmeter 变量

//跨线程组

props :操作 jmeter 属性,该变量引用了 JMeter 的配置信息,可以获取Jmeter

的属性,它的使用方法与 vars 类似,但是只能 put 进去 String 类型的值,而不能是一个对象。

props.get("START.HMS");START.HMS 为属性名,在jmeter.properties 中定义

props.put("PROP1","1234");

1.1.2 函数助手



声明全局变量:

${__setProperty(newtoken,${token},)}

引用全局变量

${__P(newtoken,)}

1.2 传参形式

1.2.1 同线程组


//示例1.beanshell语句

String str =vars.get("loginName");//获取变量loginName

vars.put("key",str);//抛出做线程组内变量

//其他

默认的变量都在本线程组下使用

1.2.2 跨线程组

//示例1.beanshell语句

String str =vars.get("token");

props.put("newToken",str);

//示例2.函数助手

${__setProperty(newtoken,${token},)}

//跨线程组引用变量的方式

${__P(newtoken,)}//只需要变量名就可以

配置元件之CSV数据文件配置