引言
在测试场景中,常会遇到需要提交系统时间的情况。本文对使用LoadRunner获取系统时间的几种方法进行探讨。
常用的方法有如下四种:
- 方法一:使用LR的参数化功能
- 方法二:使用LR函数lr_save_datetime()
- 方法三:使用C语言标准函数库中的time()和ctime()
- 方法四:使用C语言的tm结构,把时间分解成若干元素,再根据需求进行重组
方法一:使用LR的参数化功能
操作步骤:
1、在Parameter List窗口中新建一个参数localtime_now,Parameter type选择为【Date/Time】
2、设置Date/Time format,具体格式可参照帮助手册,例如%Y-%m-%d %H:%M:%S对应的是2013-10-28 16:43:06
3、在脚本中,利用函数lr_eval_string将参数localtime_now转换为变量tt_1
4、在脚本中引用变量tt_1
对应的脚本如下:
1
2
3
| char *tt_1;
tt_1 = lr_eval_string("{localtime_now}");
lr_message("系统当前的时间为:%s", tt_1);
|
运行结果:
系统当前的时间为:2013-10-28 16:43:06
方法二:使用LR函数lr_save_datetime()
在LoadRunner中,函数lr_save_datetime可以将当前时间赋值给指定参数,并可在赋值时选择时间样式。
1
2
3
4
5
| char *tt_2;
//获得当前系统时间,并根据设置的格式将当前时间赋值给 times
lr_save_datetime("%Y-%m-%d %H:%M:%S", DATE_NOW+TIME_NOW, "localtime_2");
tt_2 = lr_eval_string("{localtime_2}");
lr_message("系统当前的时间为:%s", tt_2);
|
运行结果:
系统当前的时间为:2013-10-28 17:43:16
方法三:使用C语言标准函数库中的time()和ctime()
对应的脚本如下:
1
2
3
| long tt_3;
time(&tt_3);
lr_message("系统当前的时间为:%s", ctime(&tt_3));
|
运行结果:
系统当前的时间为:Mon Oct 28 17:43:16 2013
方法四:tm结构分解
说明:tm结构即是一个结构体,将时间分解为9个部分,将时间的各个部分赋值给不同的变量,然后根据实际需求,将各个部分进行重组后使用。
对应的脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| Action()
{
struct tm {
int second; //取得当前秒数(在分钟后);取值区间为[0,59]
int minute; //取得当前分钟数(在小时后);取值区间为[0,59]
int hour; //取得当前小时数(从凌晨0点开始);取值区间为[0,23]
int day; //取得当前天数(从上月结束开始);取值区间为[1,31]
int month; //取得当前月份数(从1月开始);取值区间为[0,11]
int year; //取得当前年份数(从1900年开始)
int weekday; //取得当前日期数(为了获取星期几,从上个星期日开始);取值区间为[0,6]
int yearday; //取得当前年份天数(从1月1日开始);取值区间为[0,365]
int daylight; //取得当前夏令时标识符,实行夏令时的时候,daylight取得一个正数
//不实行夏令时的进候,daylight为0;
//不了解情况时,daylight为负数
};
long timenow; //定义保存时间的变量
struct tm *now; //定义结构指针
int year, month, day, weekday, hour, minute, second;
char *week;
time(&timenow); //获取当前时间
now = (struct tm *)localtime(&timenow); //把当前时间的结构指针赋值给now
year = now->year;
month = now->month;
day = now->day;
hour = now->hour; //获取hour值
minute = now->minute; //获取minute值
second = now->second; //获取second值
weekday = now->weekday;//获取week值
switch(weekday)//判断得到中文的星期
{
case 1:week ="星期一";
break;
case 2:week ="星期二";
break;
case 3:week ="星期三";
break;
case 4:week ="星期四";
break;
case 5:week ="星期五";
break;
case 6:week ="星期六";
break;
case 0:week ="星期日";
break;
};
lr_message("使用tm结构获取的当前时间为:%d-%d-%d %s %d:%d:%d",year,month,day,week,hour,minute,second);
return 0;
}
|
运行结果:
使用tm结构获取的当前时间为:113-9-28 星期一 17:43:16