loadrunner常用函数.docx
《loadrunner常用函数.docx》由会员分享,可在线阅读,更多相关《loadrunner常用函数.docx(25页珍藏版)》请在冰豆网上搜索。
loadrunner常用函数
Loadrunner常用函数
1字符串及数据转换操作函数
1.1常用函数
A.函数介绍
Strlen(constchar*string)
strcpy(destination_string,source_string);//拷贝一个字符串到另一个字符串中.
strcat(string_that_gets_appended,string_that_is_appended);//合并字符串
atoi(string_to_convert_to_int);//returnstheintegervalue字符串转换为整型
itoa(integer_to_conver_to_string,destination_string,base);整型转换为字符串
strcmp(string1,string2);//比较字符串0:
相同
stricmp(string1,string2)//区分大小写比较字符串
strstr(string1,string2)//
strlwr(constchar*string)//将字符串转换为小写
strupr(constchar*string)//将字符串转换为大写
B.实用例子
✓//常用字符串处理函数的例子
Actions()
{
charMyString1[20]="";
charMyString2[20]="";
charMyString3[20]="Mercury2";
charCstring[10]="12345";
intCint;
strcpy(MyString1,"Mercury1");
//NowMyString1contains"Mercury1"
//CopyMyString3intoMyString2
strcpy(MyString2,MyString3);
//CatenateMyString2toMyString1
strcat(MyString1,MyString2);
//CstringisconvertedtointegerCint
Cint=atoi(Cstring);
//Cintisconvertedtostring
Cint=100;
itoa(Cint,Cstring,10);
return0;
}
✓//字符串查找和截取例子
/*
声明:
intfindSubStr(char*resultStr,char*sourceStr,char*beginStr,char*endStr)
功能:
将字符串sourceStr中beginStr和endStr之间的字符串输出给resultStr
返回值:
0:
成功1:
失败
调用方法:
findSubStr(resultStr,”mynameiszhangweitoo”,”is”,”too”)
*/
intfindSubStr(char*resultStr,char*sourceStr,char*beginStr,char*endStr)
{
intilen,i;
char*findStartPos;
char*findEndPos;
findStartPos=(char*)strstr(sourceStr,beginStr);
if(findStartPos==NULL){
return-1;
}
lr_output_message("findStartPos=%s",findStartPos);
findEndPos=(char*)strstr(findStartPos,endStr);
if(findEndPos==NULL){
return-1;
}
lr_output_message("findEndPos=%s",findEndPos);
ilen=strlen(beginStr);
findStartPos=findStartPos+ilen;
lr_output_message("findStartPos=%s",findStartPos);
ilen=findEndPos-findStartPos;
strncpy(resultStr,findStartPos,ilen);
lr_output_message("resultstr=%s",resultStr);
return0;
}
1.2格式化字符串
A.函数介绍
函数定义:
intsprintf(char*string,char*farmat[,argument,...])
对于format说明:
%s:
格式化字符串
%d:
格式化数字类型为字符串
%x:
将数字格式化成小写十六进制数的字符串
%X:
将数字格式化成小写十六进制数的字符串
格式化结果长度:
%5d(5位),%8x(8位)
%-4d、%-5x、%-6X:
格式化结果左对齐,(没有-表示是右对齐)
sprintf(s,"%d",123);//将数字123格式化成"123"
sprintf(s,"%5d%5d",123,4567);//指定格式化长度,结果是:
s="1234567"
sprintf(s,"%-5x%5d",123,4567);//指定格式化长度,结果是:
s="7b4567"
B.实用例子
Action()
{
inti,k;
floatj;
charformatStr[32];
i=123;
k=-123;
j=123.456;
sprintf(formatStr,"formatStr=%s","formatexample");
lr_output_message(formatStr);
sprintf(formatStr,"formatinteger(123)=%d",i);
lr_output_message(formatStr);
sprintf(formatStr,"formatfloat(123.456)=%3.1f",j);
lr_output_message(formatStr);
sprintf(formatStr,"formathex(123)=%x",i);
lr_output_message(formatStr);
sprintf(formatStr,"formatHEX(123)=%X",i);
lr_output_message(formatStr);
sprintf(formatStr,"formatinteger(-123)=%5d%5X",i,i);
lr_output_message(formatStr);
return0;
}
运行结果:
Action.c(10):
formatStr=formatexample
Action.c(12):
formatinteger(123)=123
Action.c(14):
formatfloat(123.456)=123.5
Action.c(16):
formathex(123)=7b
Action.c(18):
formatHEX(123)=7B
Action.c(20):
formatinteger(-123)=1237B
1.3数据类型转换函数
A.函数介绍
Sprintf:
可以将其它数据类型转换为字符串类型(1.2中有详细描述)
Atoi:
将字符转换为整数类型
Itoa:
将整数转换为字符存储到第二个参数中,可以将整数转换为不同的数据类型字符串
Atof:
将字符转换为浮点类型(使用时应该首先在文件头声明doubleatof(constchar*string);),否则结果是错误的
Atol:
将字符转换为长整数类型
Strtol:
将一个字符串中的第一个数字字符串部分转换成长整数类型
B.例子
以下脚本是数据类型转换的例子
doubleatof(constchar*string);//必须加上这一行,否则atof函数会出现错误结果
Action()
{
inti;
doublej;
longk;
charichange[32];
/*itoa函数例子*/
i=123;
itoa(i,ichange,10);//将整数转换为十进制的字符串
lr_output_message("ichange=%s",ichange);
itoa(i,ichange,16);//将整数转换为十六进制的字符串
lr_output_message("ichange=%s",ichange);
itoa(i,ichange,2);//将整数转换为二进制的字符串
lr_output_message("ichange=%s",ichange);
/*atoi函数例子*/
i=atoi("12345");//将字符串转换为整数
lr_output_message("atoi('12345')=%d",i);
/*atof函数例子*/
j=atof("123.12");//将字符串转换为浮点数
lr_output_message("atof('123.12')=%.3f",j);
/*atol函数例子*/
k=atol("1234567890");//将字符串转换为长整型
lr_output_message("atol('1234567890')=%d",k);
/*strtol函数例子*/
//strcpy(ichange,"1234567890islongint");
k=strtol("1234M567890",ichange,10);//将字符串转换为长整型
lr_output_message("strtol()=%d",k);
return0;
}
运行结果:
Action.c(13):
ichange=123
Action.c(15):
ichange=7b
Action.c(17):
ichange=1111011
Action.c(21):
atoi('12345')=12345
Action.c(25):
atof('123.12')=123.120
Action.c(29):
atol('1234567890')=1234567890
Action.c(34):
strtol()=1234
1.4字符串编码转换的函数
函数定义:
ntlr_convert_string_encoding(constchar*sourceString,constchar*fromEncoding,constchar*toEncoding,constchar*paramName);
该函数有4个参数,含义如下:
sourceString:
被转换的源字符串。
fromEncoding:
转换前的字符编码。
toEncoding:
要转换成为的字符编码。
.
paramName:
转换后的目标字符串。
例子:
我们需要把字符(“汽车”)编码转换为UTF-8格式,因此用法如下:
lr_convert_string_encoding("汽车",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
2日期时间相关函数
2.1函数介绍
lr_save_datetime
voidlr_save_datetime(constchar*format,intoffset,constchar*name);
中文解释:
lr_save_datetime将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。
如果达到MAX_DATETIME_LEN个字符,结果字符串将被截断。
参数说明:
constchar*format
格式化信息,如:
"%Y-%m-%d"代表日期格式,"%H:
%M:
%S"代表时间格式intoffset:
时间的偏移量
DATE_NOW(现在的日期)
TIME_NOW(现在的时间)
ONE_DAY(一天的时间)
ONE_HOUR(一小时的时间)
ONE_MIN(一分钟的时间)
需要注意的是,时间的偏移量可以使用公式,例如:
DATE_NOW+ONE_DAY
这样,我们就可以取得昨天、明天的日期了
DATE_NOW-ONE_DAY(昨天)
DATE_NOW+ONE_DAY(明天)
constchar*name
参数保存的参数名;使用lr_eval_string("{参数名}")可以获取参数值
time
返回1970-1-1至现在的时间差(秒)
2.2例子
取得当前日期时间
lr_save_datetime("%Y-%m-%d%H:
%M:
%S",DATE_NOW,"abc");
lr_output_message("now=%s",lr_eval_string("{abc}"));
运行结果:
now=2010-10-1216:
52:
35
取得前天的日期
lr_save_datetime("%Y-%m-%d",DATE_NOW-2*(ONE_DAY),"abc");
lr_output_message("前天=%s",lr_eval_string("{abc}"));
运行结果:
前天=2010-10-10
取得2个小时后的时间
lr_save_datetime("%H:
%M:
%S",TIME_NOW+2*(ONE_HOUR),"abc");
lr_output_message("2小时后=%s",lr_eval_string("{abc}"));
运行结果:
2小时后=18:
56:
05
取得当前的时间,精确到毫秒
在Vgen中添加参数,参数属性设置为datet/ime,属性中格式输入%Y-%m-%d%H:
%M:
%S.000,参数值即为当前时间(精确到毫秒),如下图所示
3XML相关函数
Lr提供的XML操作函数仅适用于WEB/HTTP,webservice协议;
3.1读取XML文件内容函数
Lr_xml_extract:
获取一个字段区间的字符串
Lr_xml_find:
查询XML字符串的数量
Lr_xml_get_values:
查找XML字段元素的值
例子:
#include"as_web.h"
Action(){
intfindflag;
char*xml_input=
""
"zhengzhou"
"";
//查找字段city中的全部内容
lr_save_string(xml_input,"XML_Param");
lr_xml_extract("XML={XML_Param}","XMLFragmentParam=Querycity");
lr_output_message(lr_eval_string("查询结果:
{Querycity}"));
//查找name=zhengzhou的个数findflag=lr_xml_find("XML={XML_Param}","value=zhengzhou",
"Query=/vcom/area/city/name",LAST);
lr_output_message("找到%d处zhengzhou",findflag);
//获取name字段的值
lr_xml_get_values("XML={XML_Param}","ValueParam=Querycity",
"Query=/vcom/area/city/name",LAST);
lr_output_message(lr_eval_string("查询字段值结果:
{Querycity}"));
return0;
}
运行结果:
Action.c(11):
"lr_xml_extract"succeeded,1matchprocessed
Action.c(13):
查询结果:
zhengzhou
Action.c(15):
"lr_xml_find"succeeded,1matchprocessed
Action.c(16):
找到1处zhengzhou
Action.c(18):
"lr_xml_get_values"succeeded,1matchprocessed
Action.c(20):
查询字段值结果:
zhengzhou
3.2写XML操作函数
lr_xml_delete:
按区间删除XML中的字符串。
lr_xml_insert:
将新XML字段插入到XML字符串中。
lr_xml_replace:
替换XML字符串的字段和值。
lr_xml_set_values:
设置查询到的XML元素的值。
例子:
Action(){
intfindflag;
char*xml_input="zhengzhou";
lr_save_string(xml_input,"XML_Param");
//删除area区间的数据
lr_xml_delete("XML={XML_Param}","ResultParam=Querycity",
"Query=/vcom/area",LAST);
lr_output_message(lr_eval_string("删除后的结果:
{Querycity}"));
//将name字段值更改为zzcity
lr_xml_replace("XML={XML_Param}","ResultParam=Querycity","Query=/vcom/area/name","XmlFragment=zzcity",LAST);
lr_output_message(lr_eval_string("更改后的结果:
{Querycity}"));
//添加code字段内容
lr_xml_insert("XML={XML_Param}","ResultParam=Querycity",
"XmlFragment=410100
","Query=/vcom/area",LAST);
lr_output_message(lr_eval_string("添加后的结果:
{Querycity}"));
//将name字段值改为zz_01
lr_save_string("zz_01","ReplaceValue");
lr_xml_set_values("XML={XML_Param}","ResultParam=ReplaceParam",
"ValueParam=ReplaceValue","Query=//name",LAST);
lr_output_message(lr_eval_string("更改字段值的结果:
{ReplaceParam}"));
return0;
}
运行结果:
Action.c(9):
"lr_xml_delete"succeeded,1matchprocessed
Action.c(11):
删除后的结果:
Action.c(14):
"lr_xml_replace"succeeded,1matchprocessed
Action.c(16):
更改后的结果:
zzcity
Action.c(19):
"lr_xml_insert"succeeded,1matchprocessed
Action.c(21):
添加后的结果:
zhengzhou410100
Action.c(25):
"lr_xml_set_values"succeeded,1matchprocessed
Action.c(27):
更改字段值的结果:
zz_01
4事务相关函数
lr_end_sub_transaction/标记子事务的结束以便进行性能分析
lr_end_transaction/标记LoadRunner事务的结束
lr_end_transaction_instance/标记事务实例的结束以便进行性能分析
lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并发送错误消息
lr_get_trans_instance_duration/获取事务实例的持续时间(由它的句柄指定)
lr_get_trans_instance_wasted_time/获取事务实例浪费的时间(由它的句柄指定)
lr_get_transaction_duration/获取事务的持续时间(按事务的名称)
lr_get_transaction_think_time/获取事务的思考时间(按事务的名称)
lr_get_transaction_wasted_time/获取事务浪费的时间(按事务的名称)
lr_resume_transaction/继续收集事务数据以便进行性能分析
lr_resume_transaction_instance/继续收集事务实例数据以便进行性能分析
lr_set_transaction_instance_status/设置事务实例的状态
lr_set_transaction_