關于LoadRunner中參數值的引用

發表于:2008-10-08來源:作者:點擊數: 標簽:loadrunnerLoadRunnerLoadrunnerloadRunner參數
昨天在研究腳本的時候偶然遇到一個問題,今天正好有了點時間,就拿來再研究一下。 問題是這樣的:我想用strcpy函數把一個字符串賦給一個變量,再將這字符串做一個參數化,然后我想看看參數化是否成功,于是我用了lr_message函數把它打印出來。腳本代碼很簡單
昨天在研究腳本的時候偶然遇到一個問題,今天正好有了點時間,就拿來再研究一下。
  問題是這樣的:我想用strcpy函數把一個字符串賦給一個變量,再將這字符串做一個參數化,然后我想看看參數化是否成功,于是我用了lr_message函數把它打印出來。腳本代碼很簡單,如下所示:
  Action()
{
    char a[10];
    strcpy(a,"{a}");
    lr_message(a);
    return 0;

  其中,{a}我已經做了參數化,參數值為11。
  運行這個腳本后,發現運行日志里打印出來的a值顯示為{a}。
  在嘗試了N遍以后,我把lr_message(a);這句代碼改成lr_message(lr_eval_string(a));后問題解決,運行日志里打印出了我所期望的值11。
  問題雖然解決了,但我還是很納悶,為什么在用lr_message的時候不能直接引用參數,而我記得之前在web_url、web_submit_data等函數里都是可以直接引用參數化的值,而從來沒有出現過問題。也許是在LoadRunner里,這幾個函數對參數值的引用方式不同吧,不知道我這樣想是否正確,希望大家批評指正!

  昨天和Zee討論了一個下午,結論還是沒有明確。今天上午繼續試驗,試驗結果表明Zee說的是正確的,不能直接將C語言里的變量直接當作LR變量使用,而需要做一些轉換。事實上,執行strcpy(a,"{a}");后,并沒有真正將參數值傳給a。需要這樣寫:strcpy(a,lr_eval_string("{a}"));這樣就沒問題了。

  不過,問題還沒有結束,在tuxedo協議中,用 lrt_strcpy函數則沒有這個問題存在,例如:lrt_strcpy(sendBuf1, sendBuf);則可以成功地將sendBuf中的參數值賦值給sendBuf1。目前懷疑是該函數在內部已經進行過轉換,但并不肯定,尚待證實。 

  再次針對以上問題進行試驗,我在lrt_strcpy(sendBuf1, sendBuf);語句的前后各加了一句調試信息:lr_output_message("sendBuf:%s",sendBuf);
和lr_output_message("sendBuf1:%s",sendBuf1);
  打印出來的結果截然不同,前者的輸出顯示沒有傳入參數值,而后者則成功傳入參數。這表明確實是lrt_strcpy這個函數在搞鬼。
  至此,這個問題可以圓滿結束了!感謝Zee同學的熱情解答!^_^

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97