用beanshell實(shí)現(xiàn)功能:如果參數(shù)required param中存在 ${column1_60} 這個(gè)字符串牍颈,那么就將這個(gè)字符串替換成 從數(shù)據(jù)庫(kù)中查詢出來(lái)的某一個(gè)值
實(shí)現(xiàn)代碼如下:
運(yùn)行結(jié)果如下:
可以看到${column1_60}這個(gè)字符串并沒(méi)有按照預(yù)期結(jié)果替換
再次查看 查看結(jié)果樹中的BeanShell請(qǐng)求body,發(fā)現(xiàn)替換的那一行代碼變成了String data = data.replace("66",id);胧砰,這樣就理解了為什么替換不成功了舅世,這句意思就變成了在required param中找66旦委,如果找到了就替換成id的值,當(dāng)然不是我們想要的預(yù)期,查看了debug sampler剛好${column1_60}就是66
難道beanshell可以不通過(guò)vars.get 直接獲取到j(luò)meter的變量,直接用${column1_60} 就可以取到嗎雏亚?嘗試著打印了${column1_60} 缨硝,報(bào)錯(cuò)
這一步和剛才的差距只是少了引號(hào),加上引號(hào)再試就好了
這就說(shuō)明beanshell有第二種方法可以取到j(luò)merer里的變量罢低,這就理解了剛才替換的那句為什么執(zhí)行后變成了String data = data.replace("66",id);
vars.get("column1_60")?? 等價(jià)于? "${column1_60}"
解決開篇問(wèn)題的辦法就是可以將excel數(shù)據(jù)中換個(gè)變量名查辩,避免和jmeter中的變量沖突就可以了,將${column1_60}換成${test}奕短,這下就運(yùn)行成功了