![0249cd7e9d6dc69b961ec58e7f5768da.png](https://i-blog.csdnimg.cn/blog_migrate/3bec1a243fe6d1c8a5b08565c26ddb15.jpeg)
本文介绍LoadRunner性能测试工具的C语言脚本开发中常用到的几个方法:
一、事务和事务控制函数的使用
案例:如何自己获取DuringTime和WastedTime
a) 定义临时变量存储数据
- double duringTime;
- double wastedTime;
b) 调用方法获取两个值(在事务中,值稍微比事务时间小,位置灵活)
- duringTime=lr_get_transaction_duration("login");
- wastedTime=lr_get_transaction_wasted_time("login");
c) 输出结果
- lr_output_message("The duration time is %f seconds",duringTime);
- lr_output_message("The duration time is %f seconds",wastedTime);
二、文件操作方法的使用:
(变量放在文件的开头位置)
案例:文件的创建、读写操作(如果已存在的文件,打开文件,写入数据,关闭文件;如果文件不存在,创建文件并写入数据,关闭文件流,结束)
使用的方法:long fopen( const char *filename, const char *access_mode);
char
三、系统信息函数的使用
案例1:获取每个虚拟用户信息,在vugen中可以返回-1,none,0;可以借助File的操作将信息写入日志文件
void lr_whoami (int *vuser_id, char **sgroup, int *scid);
参数说明:
- 【int *vuser_id】需先注册,保存正在运行的vuser的ID,在虚拟用户生成器(Virtual User Generator)中回放返回-1
- 【char **sgroup】需先注册,保存正在运行的vuser的组名(脚本名),在虚拟用户生成器(Virtual User Generator)中回放返回None
- 【int *scid】需先注册,保存正在运行的Scenario的ID,在虚拟用户生成器(Virtual User Generator)中回放返回0
函数使用技巧:
函数的所有参数都为必须,其中vuser_id、scid两个整形的变量,如果不需要返回则直接用NULL替换即可
例:lr_whoami (&myid,&mygroup,NULL); //就用NULL把scid的变量替换掉了,也就不保存scid了
a)定义变量名
int id;
int cid;
char* group;
b)调用方法
lr_whoami(&id,&group,&cid);
c)输出结果:
lr_output_message("%d,%d,%s",id,cid,group);
案例2:返回执行Vuser脚本的主机名及运行controller的主机名
涉及到的方法分别是:lr_get_host_name及lr_get_master_host_name
lr_get_host_name格式:
- Return Values:这个函数成功的返回值是该主机的名字,失败的返回值是空;这个返回值是指向一个静态数据并且不能修改的只读模式
- Parameterization:该函数不能被参数化
- C语言的格式是:char *lr_get_host_name();
- Java语言的格式是:String lr.get_host_name();
a)定义变量
char* myHost;
b)调用方法
myHost=lr_get_host_name();
c)输出结果
lr_output_message("my host is : %s",myHost);
lr_get_master_host_name获取controller的主机名,自己尝试使用。
四、字符串函数的使用
案例1:获取当前日期,并打印到日志中(lr_save_datetime)
lr_save_datetime的格式如下:
void lr_save_datetime(const char *format, int offset, const char *name);
lr_save_datetime将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。如果达到MAX_DATETIME_LEN个字符,结果字符串将被截断。
参数说明:
1)const char *format
- 格式化信息,同fopen、lr_message等相同;例如:"the first is %s"
2)int offset:时间的偏移量:
- DATE_NOW(现在的日期)
- TIME_NOW(现在的时间)
- ONE_DAY(一天的时间)
- ONE_HOUR(一小时的时间)
- ONE_MIN(一分钟的时间)
需要注意的是,时间的偏移量可以使用公式,例如:DATE_NOW+ONE_DAY, 这样,我们就可以取得昨天、明天的日期了:
- DATE_NOW-ONE_DAY(昨天)
- DATE_NOW+ONE_DAY(明天)
那么,我们就可以使用如下表示得到前天的日期:
- lr_save_datetime("%Y-%B-%d",DATE_NOW-2*(ONE_DAY),"abc");
- lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*(ONE_HOUR),"abc");
- lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*60*(ONE_MIN),"abc");
当然,我们也可以使用如下表示2个小时后的时间:
- lr_save_datetime("%H:%M:%S",TIME_NOW+2*(ONE_HOUR),"ab");
- lr_save_datetime("%H:%M:%S",TIME_NOW+2*60*(ONE_MIN),"ab");
3)const char *name
- 参数保存的参数名;使用时lr_eval_string("{参数名}")
五、事务返回值处理
结束事务的标记可以是LR_AUTO、LR_PASS、LR_FAIL。
- LR_AUTO会根据事务的执行结果直接判断事务成功还是失败。
- LR_PASS,则直接确定事务是成功的
- LR_FAIL直接确定事务是失败的
也可以通过web_submit_data()的返回值判断事务的状态
int
欢迎关注作者,如果觉得写的还不错,就给点个赞同、喜欢、收藏(后续持续更新)。
【全文手打 如需转载 请标注此出处】