自動化測試loadrunner腳本編寫_第1頁
自動化測試loadrunner腳本編寫_第2頁
自動化測試loadrunner腳本編寫_第3頁
自動化測試loadrunner腳本編寫_第4頁
自動化測試loadrunner腳本編寫_第5頁
已閱讀5頁,還剩4頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、LoadRunner編寫(6)數據類型轉換和字符串操作一,數據類型轉換沒有使用過 C 編程的 LoadRunner介紹這方面的知識。1 相似函數的輸出在不同的位置編寫者會發現在數據類型轉化方面比較。下面象很多C 函數一樣,使用 atoi 函數的結果即為返回值如Result = atoi( charY );而:itoa 的返回結果為第二個參數。itoa(X, charY, 10);第一個參數是需要轉換的數二個參數是轉換后的字符數組,需要注意的是數組必須定義為固定的長度,如:char chary20;數組的最大長度為 32064(32K),否則會出現“too many variables”編譯錯誤

2、。如果定義為變長的字符串如 char *charY,則程序會出錯。第三個參數不是數組的長度,而是數字的基數,10 進制是最常用的,其他還有二進制,八進制,十六進制。2 有一些函數實現了同樣的功能itoa 不是一個標準的 ANSI C 函數但是是 C 的 stdlib.h 中的一個函數。所以它不被包括在 unix 機器上的 LibC 中??梢允褂脴藴实?sprf 函數來代替:sprf(charY,“%d”,X);3 是用%X 來轉換一個十六進制數Num;sscanf(“f”,“%X”,&Num);lr_output_message(“%d”,Num); /打印 65535 ,f 的整數值4 從文

3、本中提取數字的規則如果第一個字符不是數字或者為空,atoi 返回 0,即“e24”會返回 0atoi 轉換一個非數字的字符會返回組成這個字符的數字,如“-3.2”返回-3.0。“123345”返回 123。5 LoadRunner言的數字。中的參數必須轉換成 C 字符串。有兩種方式來轉化 LR 的參數為 C 語6 參數的算術運算LoadRunner 沒有提供對參數的算術運算的函數。所以 LR 的參數必須:轉換成 C 的整數使用 C 的函數來運算最后返回一個 C 的字符串3) 把返回的字符串保存成參數zibeike 注:除了對于數字類型的參數的運算之外,對于文本形式的參數的操作,可以參考我的另一

4、篇文章的內容:http:/二字符串操作/?34866/action_viewspace_itemid_75592.html在 C 語言中,字符串是固定長度的,因為他們本身由獨立的字符組成的字符數組。數組是只讀的。任何修改字符串長度的函數調用都會報錯:Error: Creter runtime error - memory violation error during replay.在 LoadRunner 的 as_web.h 庫中的字符串函數可以使用“prototy讀寫內存:”的方式char *strtok(char *, char *); / tokenizrototype char *s

5、trstr(char *, char *); / substring prototypechar *strdup(char *); / String duplication prototype floaof(); / alpha to return float daypelr_eval_string(pNum_out);/ 3. Save the string as a parameter to be passed on: lr_save_string( cBuf, pNum_out);/Prout the parameter value after incrementing it. lr_m

6、essage(* Parameter from %s to %s,lr_eval_string(pNum_in);/ 1. Evaluate parametero a Ceger: i = atoi( lr_eval_string(pNum_in) );/ 2. Do the mand output the result to a C string:sprf( cBuf, %d, i+1);i;char cBuf10;sprf(X, %d, lr_eval_string() );i = atoi( lr_eval_string( ) );#include as_web.hchar *strto

7、k(char *, char *); / prototype function call.ActionX()char charcharaBuffer256; / input*cToken; / individual cSeparator = ; /string to be parsed. token from strtok.blseparator.i; / incrementerchar val320; / output array of strings. char modified_val20;/ Create a parameter named pDate:lr_save_string(J

8、anuary 2, 2001, pDate);/ Put parametero a string buffer:strcpy( aBuffer,lr_eval_string(pDate);/ Show the buffer for debugging:lr_output_message(%sn,aBuffer);/ getword (to thebl):cToken = strtok( aBuffer,cSeparator);i = 1;if(!token)/token was not found: lr_output_message(No tokens found inreturn( -1

9、);string!); else while( cToken != NULL) / tokens are not NULL:lr_output_message(Token=%s, cToken);/ Stuff in another array:strcpy( vali, cToken );/ Get next token:cToken =strtok( NULL, cSeparator); i+; / incrementlr_output_message(Val #1lr_output_message(Val #2lr_output_message(Val #2is:is:is:%s, va

10、l1);%s, val2);%s, val3);strncpy( modified_val, val2, 1 );strcat 連接兩個字符串strchr 返回指向第一個要查找的字符出現的位置的指針strcmp 比較兩個字符strcpy字符串到另一個stricmp 執行一個大小寫敏感的比較其他還有 strdup,strncat,strncpy,strnicmp,strrchr,strset,strspn,strstr 等字符串操作的函數。zibeike 注:關于字符串操作的編寫,可以參考另一篇文章:http:/?34866/action_viewspace_itemid_75428.html三

11、、字符串操作zibeike 翻譯自:http:/1lrscrpt.htmLoadRunner 中常用的字符串操作函數有:strcpy(destination_string, source_string);strcat(string_t_gets_appended, string_t_is_appended);atoi(string_to_convert_to_); /returns theeger valueitoa(eger_to_conver_to_string, destination_string, base); / base is 10strcmp(string1, string2)

12、; / returns 0 if both strings are equalmodified_val2 = 0;while (modified_val2 != NULL) lr_output_message(=%s, modified_val); modified_val2 = strtok(NULL, );return 0;對各函數的定義:strcpy( ):拷貝一個字符串到另一個字符串中.strcat( ):添加一個字符串到另一個字符串的末尾。strcmp( ):比較兩個字符串,如果相等返回 0。 atoi():轉換一個 ASCII 字符串為一個整型。 itoa():根據給定的進制,轉換

13、一個整型數據為 ASCII 字符串下面的例子使用了上面這些函數:Actions()char MyString120 = ; char MyString220 = ;char MyString320 = Mercury2; char Cstring10 = 12345;C;/ MyString1 is empty/lr_output_message( MyString1 = %s,MyString1);/ copy Mercury1o MyString1/ strcpy(MyString1,Mercury1);/ Now MyString1 contains Mercury1/lr_output

14、_message( MyString1 = %s,MyString1);四、數字操作/ Copy MyString3o MyString2/lr_output_message( MyString2 = %s,MyString2); strcpy(MyString2,MyString3);lr_output_message( MyString2 = %s,MyString2);/ Catenate MyString2 to MyString1/ strcat(MyString1,MyString2);lr_output_message( MyString1 = %s,MyString1);/ C

15、string is converted toeger C/lr_output_message( Cstring = %s,Cstring); C= atoi(Cstring);lr_output_message( C= %d,C);/ Cis converted to string C= 100;itoa(C,Cstring,10);lr_output_message( Cstring = %s,Cstring);return 0;這幾天一直在學習 LoadRunner 的 VuGen 編程,今天想對關聯函數 web_reg_save_param 做詳細的試驗和研究:問題提出:如何對關聯的數據

16、進行字符串操作。下面使用了 LoadRunner 自帶的訂票例子為例,進行了這方面的試驗。假設我要關聯的數據是由幾個字符串組成的。如何使這些字符串組成一個參數,供我后面的函數使用?解決方法:使用多個關聯函數,對關聯參數進行字符串操作,最后把生成的字符串保存成一個參數,供下面調用該參數的函數使用。如下:Action()number1,number2;char ses111000; char string1000;length;char *stringtemp;/char ses2220;web_reg_save_param(ses1,LB=name=userSes value=,RB=.,Ord

17、=ALL,LAST);web_reg_save_param(ses2,LB=.,RB=&;,Ord=ALL,LAST);web_url(WebTours,URL=,Resource=0, RecContentType=text/html, Referer=,Snapshot=t1.inf,Mode=HTML,LAST);strcpy(string,);strcpy(string,lr_eval_string(ses1_1);/strcpy(ses1,);sprf(ses11,ses2_1);strcat(string,.);length= strlen(lr_eval_string(ses l

18、ength=length-2;11);number1=atoi(lr_eval_string(ses1_count);number2=atoi(lr_eval_string(ses2_count);lr_output_message(%d,%d,number1,number2);/lr_output_message(%d,length);stringtemp=lr_eval_string(ses11);strncat(string,stringtemp,length);/srcat(string,ses11);lr_save_string(lr_eval_string(string),ses);lr_output_message(%s,lr_eval_string(ses1_1);lr_output_message(%s,lr_eval_string(ses2_1);有兩個關聯的參數,ses1 和 ses2,最后生成 ses,被 web_submit_data 函數調用。藍色部分是需要特別注意的地方。編寫調試過程中遇到和解釋:1 web_reg_save_param()中如果沒有指定 Ord=ALL 的話,默認是取的第一個符合左右邊界的值,這樣使用關聯的參數時可以直接使用變量名,如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論