以前真沒注意過后面看某個群有人說到這個函數一查,還真有,那么處理時間戳就簡單很多了,我們經常在各種網站上看到類似於這樣的時間戳
1302245899530
51Testing軟件測試網"d bLq!uR&am
做時間戳的目的是為了JS緩存和防止CSRF,在LR中可以簡單的使用下面這個函數
web_save_timestamp_param
來生成時間戳
web_save_timestamp_param("tStamp", LAST);
lr_output_message("%s",lr_eval_string("{tStamp}"));
brokerDetail.c(49): web_save_timestamp_param("web_save_timestamp_param") was successful [MsgId: MMSG-26392]
brokerDetail.c(53): 1433760182344
我想生成唯一的一個用戶名。想到用web_save_timestamp_param函數。web_save_timestamp_param function saves the current timestamp to LoadRunner parameter. Timestamp is the number of milliseconds since midnight January 1st, 1970 (also known as Unix Epoch).
說這個函數是存儲毫秒級的時間戳。而我剛取到的時間戳是1302245899530,這個時間戳我完全看不懂呀!跟時間不搭邊呀現在時間是14:58分鍾。
后來才發現取到的時間戳是現在時間減去現在的時間 減去 1970年1月1日0點00 的時間 ,然后換算成毫秒。
Lr_save_datetime函數的使用
最近幾天在錄制測試腳本,希望能有一個方法自動保存系統時間,以便能夠更好的進行分辨,於是在LR的幫助函數中查找到了lr_save_datetime函數,一試驗,感覺非常不錯,滿足了我的要求,下面就將lr_save_datetime函數的使用方法記載下來,以便后用:
<!--[if !supportEmptyParas]--> <!--[endif]-->
函數原型:
voidlr_save_datetime(const char *format,intoffset,const char *name);
<!--[if !supportEmptyParas]--> <!--[endif]-->
format:期望輸出的日期格式,比如說:%Y、%m、%d、%X等等
<!--[if !supportEmptyParas]--> <!--[endif]-->
offset:類似與表示時間的一些關鍵字常量,主要有DATE_NOW, TIME_NOW, ONE_DAY, ONE_HOUR, ONE_MIN,他們可以單獨使用,也可以聯合使用,比如DATE_NOW + TIME_NOW
<!--[if !supportEmptyParas]--> <!--[endif]-->
name:期望將時間保存到的那個參數的名稱
<!--[if !supportEmptyParas]--> <!--[endif]-->
舉例:
lr_save_datetime(“%Y-%m-%d %x”,DATE_NOW+TIME_NOW,“DateTimeParam”);
lr_output_message(lr_eval_string("Now is {DateTimeParam}"));
loadrunner函數 lr_save_datetime
今天到51testing的blog里查看文章《Loadrunner獲取當前系統時間》的回復,51testing的網友persist提到了一個lr函數實現的方法也可以實現,在這里非常感謝persist;只有
交流和不斷的學習,我們的技術水平才能進步哈!!
本人在51testing的blog全部為原創,轉載請注明!!
扯的有點遠了,還是看這個函數吧!!
【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("{參數名}")
示例如下:
===========================================
Action()
{
lr_save_datetime("%y-%b-%d",DATE_NOW-2*24*(ONE_HOUR),"abc");
//保存前天的日期到參數abc中
lr_message("the day before yesterday is:%s",lr_eval_string("{abc}"));
//輸出abc的值
lr_save_datetime("%H:%M:%S",TIME_NOW+2*(ONE_HOUR),"ab");
//保存2個小時后的時間到參數ab中
lr_message("the time after two hour is:%s",lr_eval_string("{ab}"));
//輸入ab的值
return 0;
}
執行結果如下:
the day before yesterday is:07-七月-04
the time after two hour is:15:33:41
===========================================
附:《lr_save_datetime格式參數表》
%a 星期幾的簡寫
%A 星期幾的全稱
%b 月分的簡寫
%B 月份的全稱
%c 標准的日期的時間串
%C 年份的后兩位數字
%d 十進制表示的每月的第幾天
%D 月/天/年
%e 在兩字符域中,十進制表示的每月的第幾天
%F 年-月-日
%g 年份的后兩位數字,使用基於周的年
%G 年分,使用基於周的年
%h 簡寫的月份名
%H 24小時制的小時
%I 12小時制的小時
%j 十進制表示的每年的第幾天
%m 十進制表示的月份
%M 十時制表示的分鍾數
%n 新行符
%p 本地的AM或PM的等價顯示
%r 12小時的時間
%R 顯示小時和分鍾:hh:mm
%S 十進制的秒數
%t 水平制表符
%T 顯示時分秒:hh:mm:ss
%u 每周的第幾天,星期一為第一天 (值從0到6,星期一為0)
%U 第年的第幾周,把星期日做為第一天(值從0到53)
%V 每年的第幾周,使用基於周的年
%w 十進制表示的星期幾(值從0到6,星期天為0)
%W 每年的第幾周,把星期一做為第一天(值從0到53)
%x 標准的日期串
%X 標准的時間串
%y 不帶世紀的十進制年份(值從0到99)
%Y 帶世紀部分的十制年份
%z,%Z 時區名稱,如果不能得到時區名稱則返回空字符。
%% 百分號