自動(dòng)化測(cè)試loadrunner腳本編寫_第1頁
自動(dòng)化測(cè)試loadrunner腳本編寫_第2頁
自動(dòng)化測(cè)試loadrunner腳本編寫_第3頁
自動(dòng)化測(cè)試loadrunner腳本編寫_第4頁
自動(dòng)化測(cè)試loadrunner腳本編寫_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

4、篇文章的內(nèi)容:http:/二字符串操作/?34866/action_viewspace_itemid_75592.html在 C 語言中,字符串是固定長(zhǎng)度的,因?yàn)樗麄儽旧碛瑟?dú)立的字符組成的字符數(shù)組。數(shù)組是只讀的。任何修改字符串長(zhǎng)度的函數(shù)調(diào)用都會(huì)報(bào)錯(cuò):Error: Creter runtime error - memory violation error during replay.在 LoadRunner 的 as_web.h 庫中的字符串函數(shù)可以使用“prototy讀寫內(nèi)存:”的方式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 連接兩個(gè)字符串strchr 返回指向第一個(gè)要查找的字符出現(xiàn)的位置的指針strcmp 比較兩個(gè)字符strcpy字符串到另一個(gè)stricmp 執(zhí)行一個(gè)大小寫敏感的比較其他還有 strdup,strncat,strncpy,strnicmp,strrchr,strset,strspn,strstr 等字符串操作的函數(shù)。zibeike 注:關(guān)于字符串操作的編寫,可以參考另一篇文章:http:/?34866/action_viewspace_itemid_75428.html三

11、、字符串操作zibeike 翻譯自:http:/1lrscrpt.htmLoadRunner 中常用的字符串操作函數(shù)有: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;對(duì)各函數(shù)的定義:strcpy( ):拷貝一個(gè)字符串到另一個(gè)字符串中.strcat( ):添加一個(gè)字符串到另一個(gè)字符串的末尾。strcmp( ):比較兩個(gè)字符串,如果相等返回 0。 atoi():轉(zhuǎn)換一個(gè) ASCII 字符串為一個(gè)整型。 itoa():根據(jù)給定的進(jìn)制,轉(zhuǎn)換

13、一個(gè)整型數(shù)據(jù)為 ASCII 字符串下面的例子使用了上面這些函數(shù):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);四、數(shù)字操作/ 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;這幾天一直在學(xué)習(xí) LoadRunner 的 VuGen 編程,今天想對(duì)關(guān)聯(lián)函數(shù) web_reg_save_param 做詳細(xì)的試驗(yàn)和研究:?jiǎn)栴}提出:如何對(duì)關(guān)聯(lián)的數(shù)據(jù)

16、進(jìn)行字符串操作。下面使用了 LoadRunner 自帶的訂票例子為例,進(jìn)行了這方面的試驗(yàn)。假設(shè)我要關(guān)聯(lián)的數(shù)據(jù)是由幾個(gè)字符串組成的。如何使這些字符串組成一個(gè)參數(shù),供我后面的函數(shù)使用?解決方法:使用多個(gè)關(guān)聯(lián)函數(shù),對(duì)關(guān)聯(lián)參數(shù)進(jìn)行字符串操作,最后把生成的字符串保存成一個(gè)參數(shù),供下面調(diào)用該參數(shù)的函數(shù)使用。如下: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);有兩個(gè)關(guān)聯(lián)的參數(shù),ses1 和 ses2,最后生成 ses,被 web_submit_data 函數(shù)調(diào)用。藍(lán)色部分是需要特別注意的地方。編寫調(diào)試過程中遇到和解釋:1 web_reg_save_param()中如果沒有指定 Ord=ALL 的話,默認(rèn)是取的第一個(gè)符合左右邊界的值,這樣使用關(guān)聯(lián)的參數(shù)時(shí)可以直接使用變量名,如

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論