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