Loadrunner变量分为局部变量和全局变量。
1. 如何定义变量
在Loadrunner脚本中变量必须在开头声明。比如说,在Vuser_init/Action/Vuser_end定义变量,必须现在最顶端生命,后面才能使用。如果不这样,编译器是通不过的。
例如1:
vuser_init()
{
int i=0;
char tmp[40];
char str[40];
.....
//使用变量
}
2. 局部变量
就像C语言一样,变量有作用域范围,局部变量包含在函数或者Vuser_init/Action/Vuser_end内部,对于其他范围之外就不起作用了。
例子2:
vuser_init()
{
char * str=test;
lr_output_message(str Value1: %s,str);
return 0;
}
Action()
{
lr_output_message(str Value1: %s,str);
return 0;
}
由于Action中的变量str没有定义,所以编译报错。如果注释点这一行,运行,在控制台中打印出结果
3. 全局变量
若要跨越Vuser_init/Action/Vuser_end定义变量,则需要定义全局变量。定义方式有两种:
1)定义在globals.h文件中
例子3:
#ifndef _GLOBALS_H
#define _GLOBALS_H
//--------------------------------------------------------------------
// Include Files
#include lrun.h
#include web_api.h
#include lrw_custom_body.h
//定义全局变量
char * str=This is a test;
//--------------------------------------------------------------------
// Global Variables
#endif // _GLOBALS_H
2)定义在Vuser_init/Action/Vuser_end外部
例子4:
char * str=test;
vuser_init()
{
lr_output_message(str Value1: %s,str);
return 0;
}
Action()
{
lr_output_message(str Value1: %s,str);
return 0;
}
//字符串复制
strcpy(str,Hello ) ;
//字符串连接
strcat(str,World !);
lr_message(str: %s,str);
//变量转为参数,将变量str的值存到参数Param中
lr_save_string(str,Param);
//参数复制
lr_save_string(lr_eval_string({Param}),Param_1);
//参数转为变量
strcpy(str1,lr_eval_string({Param_1}));
lr_message(str1: %s,str1);
//参数名称格式化输出到变量中
sprintf(str2,{Param_%d},1);
lr_message(str2: %s,lr_eval_string(str2));
在web系统中 参数一般通过web_reg_save_param获取
语法:
int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);
参数说明:
ParamName: 存放得到的动态内容的参数名称
list of Attributes: 其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写
Notfound: 当在返回信息中找不到要找的内容时应该怎么处理
Notfound=error: 当在返回信息中找不到要找的内容时,发出一个错误讯息。这是缺省值。
Notfound=warning: 当在返回信息中找不到要找的内容时,只发出警告,脚本也会继续执行下去不会中断。
LB( Left Boundary ) : 返回信息的左边界字串。该属性必须有,并且区分大小写。
RB( Right Boundary ): 返回信息的右边界字串。该属性必须有,并且区分大小写。
RelFrameID: 相对于URL而言,欲查找的网页的Frame。此属性质可以是All或是数字,该属性可有可无。
Search : 返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。
ORD : 说明第几次出现的左边界子串的匹配项才是需要的内容。该属性可有可无,缺省值是1。如为All,则将所有找到的内容储存起来。
SaveOffset : 当找到匹配项后,从第几个字元开始存储到参数中。该属性不能为负数,缺省值为0。
SaveLen :当找到匹配项后,偏移量之后的几个字元存储到参数中。缺省值是-1,表示一直到结尾的整个字串都存入参数。
Convert : 可取的值有以下两种:
HTML_TO_URL : 将 HTML-encoded 资料转成 URL-encoded 资料格式
HTML_TO_TEXT : 将 HTML-encoded 资料转成纯文字资料格式
注:可以将ORD设置成ALL看看效果,然后充分挖掘
附:
字符串处理主要是对字符串操作和比较。
函数名 介绍
strcat 连接两个字符串
strchr 返回字符串第一次出现后的所有字符
strcmp 区分大小写字母比较
strcpy 复制一个字符串到另一个
strdup 复制字符串
stricmp 不区分大小写字母比较
strlen 返回字符串长度
strlwr 转化字符串为小写字母
strncat 一个字符串连接另一个字符串到第n个的字符
strncmp 比较两个字符串从第一到n个字符
strncpy 复制一个字符串从第一到n个字符到另一个字符串
strnicmp 比较两个字符串的n个字符
strrchr 返回字符最后出现后的所有字符
strset 为字符串填充特殊字符
strspn 返回字符串中包含特殊字符的个数
strstr 返回一个字符串在另一个中第一出现的位置数
strtok 返回特殊标记分割的字符
strupr 转化字符串为大小字母