(一)從CSV文件讀取要批量輸入的變量
1.使用組件:配置元件->CSV Data Set Config
2.組件位置:放在所服務請求前
3.組件說明:
- 文件名:指向CSV配置文件的路徑(包含文件名)。
- 文件編碼:CSV文件默認的編碼是UTF-8。
- 變量名稱:和CSV的列相對應,名稱自定義(沒有拿中文當變量的說法)
- 忽略首行:通常情況下,CSV的文件首行標注數據的含義,所以要設置忽略,如果不忽略的話,就從第一行來讀取。
- 分割符:默認的英文逗號
- 是否允許帶引號:字面意思,如果你的CSV中是有JSON數據,或者帶有引號的數據,建議設為True
- 遇到文件結束符再次循環:字面意思,一般情況下讀取所有數據之后就可以結束了,如果是想重復利用數據,這里可以設置為True,多次循環。(操作的數據不是線程)
- 遇到文件結束符停止線程:字面意思,配置文件讀取完畢之后,就結束當前線程。(操作的線程)
- 線程共享模式:看想讓這個CSV數據文件作用范圍是哪里。
4.變量引用
JMeter產生變量的方式有很多種,但是引用變量的方式只有一種: ${變量名}
例如:上面的CSV讀取產生的變量名:login_name
引用的時候就是:
${login_name}
5.實例
添加變量:
引用變量:
(二)利用Cookie進行值的傳遞
(三)利用正則提取器/json提取器提取上一個接口的返回數據作為下個請求的輸入
一、正則提取器
1、正則提取器組件說明
- 引用名稱:存儲匹配結果的變量名稱,可以是一個值也可以是一組值
- 正則表達式:匹配的正則表達式,正則表達式里面可以有多個正則
- 模板:正則表達式提取器類型,樣式為:$n$,模板可自由組合,拼接組成新的字符串內容。
- 模板為$0$,則為整個表達式匹配到的內容;
- 模板為:$1$,則對應正則表達式中的第一個小括號內()匹配的內容;
- 模板為$2$,則對應正則表達式中的第二個小括號()匹配的內容;
- 模板為$1$$2$,則把2個()所匹配的內容拼接起來,$1$aa$2$拼接兩個變量的內容,並在中間加上aa
- 匹配數字:-1代表取全部數據,0代表隨機取值,1代表取第1個數據,2代表取第2個數據
- 缺省值:找不到匹配時的值
2、實例
①添加組件
②設置組件
③引用變量
二、json提取器
1.json提取器組件說明
- 變量名:存儲提取的變量名字
- 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.實例
①目標數據
②添加組件
③配置組件
④引用參數
同線程引用
跨線程引用
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,)}//只需要變量名就可以