jmeter的屬性和變量可以簡(jiǎn)單理解為編程里面的全局變量和局部變量钮惠。屬性是全局可見巫糙,可以跨線程組傳遞調(diào)用岗喉,而變量基本上只能存在于一個(gè)線程組中(在測(cè)試計(jì)劃定義的變量也是可以跨線程組傳遞的)桃焕。同線程組內(nèi)的數(shù)據(jù)傳遞一般用變量买决,例如,存放一個(gè)臨時(shí)的過程值带猴。多個(gè)進(jìn)程組共用的一般用屬性昔汉,例如,登錄操作的session值需要傳給其他線程組用拴清,避免每個(gè)線程組都重復(fù)登錄靶病。
屬性的創(chuàng)建和賦值及訪問方法如下:
1.創(chuàng)建一個(gè)屬性并賦值:
方式一:使用beanShell的內(nèi)置對(duì)象props会通,props.put("屬性名","屬性值");
方式二:${__setProperty(cookie3,${COOKIE_session})};
方法二是通過函數(shù)setProperty創(chuàng)建屬性(jmeter一般通過${__函數(shù)名(參數(shù))}的方式調(diào)用函數(shù))娄周。cookie3表示待創(chuàng)建的屬性名稱涕侈,第二個(gè)參數(shù)表示將要賦予的屬性值。
注:setProperty函數(shù)的屬性名和屬性值參數(shù)無需帶引號(hào)煤辨,否則引號(hào)會(huì)被jmeter當(dāng)做屬性名或者屬性值的一部分裳涛。例如,${__setProperty(“cookie3”,${COOKIE_session})} 執(zhí)行后會(huì)創(chuàng)建一個(gè)名為“cookie3”的屬性而不是cookie3屬性众辨,并且屬性名和屬性值兩個(gè)參數(shù)間不能存在空格端三,否則這個(gè)空格會(huì)被認(rèn)為是屬性值的一部分賦值給屬性。
2.在其他線程組訪問該屬性:
方法一:通過函數(shù)${__P(屬性名)}進(jìn)行讀染槌埂技肩;
方法二:通過函數(shù)${__property(屬性名)}進(jìn)行讀取浮声;
方式三:使用BeanShell內(nèi)置對(duì)象獲取props.get("屬性名");
注:若屬性是通過變量進(jìn)行賦值的,例如旋奢,${__setProperty(session,${cookie})}泳挥,此時(shí)跨線程組且在BeanShell腳本中使用上面方法讀取session屬性時(shí),讀取到的值為“${cookie}”,而不是${cookie}對(duì)應(yīng)的變量值(但是在同一線程組讀取session屬性則能正確讀取變量值至朗,可能原因:猜測(cè)是跨線程組訪問屬性時(shí)屉符,讀取不到${cookie}導(dǎo)致的,畢竟變量無法跨線程組傳遞锹引,在測(cè)試計(jì)劃中定義的變量除外)矗钟。不過在jmeter的一些控件中,跨進(jìn)程組的情況下是可以直接讀取到通過變量賦值的屬性嫌变,例如http cookie管理器吨艇、用戶定義的變量控件等。
變量的創(chuàng)建和賦值及訪問:
1.創(chuàng)建一個(gè)變量并賦值:
方式一:在jmeter提供的控件中創(chuàng)建腾啥;
方式二:使用vars對(duì)象在腳本中創(chuàng)建东涡,vars.put("變量名","變量值");
2.訪問變量:
方式一:${變量名}
方式二: vars.get("變量名")