LR中的時間戳函數web_save_timestamp_param


以前真沒注意過后面看某個群有人說到這個函數一查,還真有,那么處理時間戳就簡單很多了,我們經常在各種網站上看到類似於這樣的時間戳

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 時區名稱,如果不能得到時區名稱則返回空字符。
%% 百分號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM