




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LoadRunner編寫(xiě)(6)數(shù)據(jù)類(lèi)型轉(zhuǎn)換和字符串操作一,數(shù)據(jù)類(lèi)型轉(zhuǎn)換沒(méi)有使用過(guò) C 編程的 LoadRunner介紹這方面的知識(shí)。1 相似函數(shù)的輸出在不同的位置編寫(xiě)者會(huì)發(fā)現(xiàn)在數(shù)據(jù)類(lèi)型轉(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ù)來(lái)代替:sprf(charY,“%d”,X);3 是用%X 來(lái)轉(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 字符串。有兩種方式來(lái)轉(zhuǎn)化 LR 的參數(shù)為 C 語(yǔ)6 參數(shù)的算術(shù)運(yùn)算LoadRunner 沒(méi)有提供對(duì)參數(shù)的算術(shù)運(yùn)算的函數(shù)。所以 LR 的參數(shù)必須:轉(zhuǎn)換成 C 的整數(shù)使用 C 的函數(shù)來(lái)運(yùn)算最后返回一個(gè) C 的字符串3) 把返回的字符串保存成參數(shù)zibeike 注:除了對(duì)于數(shù)字類(lèi)型的參數(shù)的運(yùn)算之外,對(duì)于文本形式的參數(shù)的操作,可以參考我的另一
4、篇文章的內(nèi)容:http:/二字符串操作/?34866/action_viewspace_itemid_75592.html在 C 語(yǔ)言中,字符串是固定長(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 庫(kù)中的字符串函數(shù)可以使用“prototy讀寫(xiě)內(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è)大小寫(xiě)敏感的比較其他還有 strdup,strncat,strncpy,strnicmp,strrchr,strset,strspn,strstr 等字符串操作的函數(shù)。zibeike 注:關(guān)于字符串操作的編寫(xiě),可以參考另一篇文章: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)色部分是需要特別注意的地方。編寫(xiě)調(diào)試過(guò)程中遇到和解釋?zhuān)? web_reg_save_param()中如果沒(méi)有指定 Ord=ALL 的話,默認(rèn)是取的第一個(gè)符合左右邊界的值,這樣使用關(guān)聯(lián)的參數(shù)時(shí)可以直接使用變量名,如
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 木制容器設(shè)計(jì)與制造的綠色工藝考核試卷
- 服裝零售店鋪經(jīng)營(yíng)績(jī)效評(píng)估與改進(jìn)措施考核試卷
- 機(jī)器人智能識(shí)別與追蹤技術(shù)考核試卷
- 制糖業(yè)的市場(chǎng)滲透與渠道拓展考核試卷
- 期刊出版商業(yè)模式考核試卷
- 批發(fā)業(yè)務(wù)中的國(guó)際物流考核試卷
- 醫(yī)院護(hù)士就業(yè)合同范本
- 蘇州新版裝修合同范本
- 人工智能智能城市規(guī)劃與設(shè)計(jì)協(xié)議
- 餐廚廢棄物處理合同
- 人工智能對(duì)輿情管理的價(jià)值
- 地理-河南省部分重點(diǎn)高中九師聯(lián)盟2024-2025學(xué)年高三下學(xué)期2月開(kāi)學(xué)考試試題和答案
- 老年護(hù)理相關(guān)法律法規(guī)
- 《陶瓷工藝技術(shù)》課件
- 變更強(qiáng)制措施的申請(qǐng)書(shū)
- 供電所安全演講
- 供應(yīng)鏈韌性提升與風(fēng)險(xiǎn)防范-深度研究
- 化工原理完整(天大版)課件
- 《淞滬會(huì)戰(zhàn)》課件
- 《智能制造技術(shù)基礎(chǔ)》課件-第4章 加工過(guò)程的智能監(jiān)測(cè)與控制
- 罪犯正常死亡報(bào)告范文
評(píng)論
0/150
提交評(píng)論