引言

在测试场景中,常会遇到需要提交系统时间的情况。本文对使用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