昨天在研究腳本的時(shí)候偶然遇到一個(gè)問(wèn)題,今天正好有了點(diǎn)時(shí)間,就拿來(lái)再研究一下。
問(wèn)題是這樣的:我想用strcpy函數(shù)把一個(gè)字符串賦給一個(gè)變量,再將這字符串做一個(gè)參數(shù)化,然后我想看看參數(shù)化是否成功,于是我用了lr_message函數(shù)把它打印出來(lái)。腳本代碼很簡(jiǎn)單,如下所示:
Action()
{
char a[10];
strcpy(a,"{a}");
lr_message(a);
return 0;
}
其中,{a}我已經(jīng)做了參數(shù)化,參數(shù)值為11。
運(yùn)行這個(gè)腳本后,發(fā)現(xiàn)運(yùn)行日志里打印出來(lái)的a值顯示為{a}。
在嘗試了N遍以后,我把lr_message(a);這句代碼改成lr_message(lr_eval_string(a));后問(wèn)題解決,運(yùn)行日志里打印出了我所期望的值11。
問(wèn)題雖然解決了,但我還是很納悶,為什么在用lr_message的時(shí)候不能直接引用參數(shù),而我記得之前在web_url、web_submit_data等函數(shù)里都是可以直接引用參數(shù)化的值,而從來(lái)沒有出現(xiàn)過(guò)問(wèn)題。也許是在LoadRunner里,這幾個(gè)函數(shù)對(duì)參數(shù)值的引用方式不同吧,不知道我這樣想是否正確,希望大家批評(píng)指正!
問(wèn)題是這樣的:我想用strcpy函數(shù)把一個(gè)字符串賦給一個(gè)變量,再將這字符串做一個(gè)參數(shù)化,然后我想看看參數(shù)化是否成功,于是我用了lr_message函數(shù)把它打印出來(lái)。腳本代碼很簡(jiǎn)單,如下所示:
Action()
{
char a[10];
strcpy(a,"{a}");
lr_message(a);
return 0;
}
其中,{a}我已經(jīng)做了參數(shù)化,參數(shù)值為11。
運(yùn)行這個(gè)腳本后,發(fā)現(xiàn)運(yùn)行日志里打印出來(lái)的a值顯示為{a}。
在嘗試了N遍以后,我把lr_message(a);這句代碼改成lr_message(lr_eval_string(a));后問(wèn)題解決,運(yùn)行日志里打印出了我所期望的值11。
問(wèn)題雖然解決了,但我還是很納悶,為什么在用lr_message的時(shí)候不能直接引用參數(shù),而我記得之前在web_url、web_submit_data等函數(shù)里都是可以直接引用參數(shù)化的值,而從來(lái)沒有出現(xiàn)過(guò)問(wèn)題。也許是在LoadRunner里,這幾個(gè)函數(shù)對(duì)參數(shù)值的引用方式不同吧,不知道我這樣想是否正確,希望大家批評(píng)指正!
不過(guò),問(wèn)題還沒有結(jié)束,在tuxedo協(xié)議中,用 lrt_strcpy函數(shù)則沒有這個(gè)問(wèn)題存在,例如:lrt_strcpy(sendBuf1, sendBuf);則可以成功地將sendBuf中的參數(shù)值賦值給sendBuf1。目前懷疑是該函數(shù)在內(nèi)部已經(jīng)進(jìn)行過(guò)轉(zhuǎn)換,但并不肯定,尚待證實(shí)。
和lr_output_message("sendBuf1:%s",sendBuf1);
打印出來(lái)的結(jié)果截然不同,前者的輸出顯示沒有傳入?yún)?shù)值,而后者則成功傳入?yún)?shù)。這表明確實(shí)是lrt_strcpy這個(gè)函數(shù)在搞鬼。
至此,這個(gè)問(wèn)題可以圓滿結(jié)束了!感謝Zee同學(xué)的熱情解答!^_^