2013-11-20 53 views
4

我試圖在JMeter中使用JavaScript的BSF斷言。JMeter BSF聲明 - 比較日期變量

在JMeter的調試採樣我有這兩個變量: insert_date = 2013年11月11日16:22:33.000343 db_created_date_1 = 2013年11月11日16:22:53.863187

,我想比較他們查看它們是否發生在彼此的正負10秒的特定時間範圍內 - 或者時間差是否超過20秒。

這樣做的最好方法是什麼?

我不知道我是否應該使用Date.parse(dateVal) Date.parse函數返回一個整數值,表示1970年1月1日午夜到dateVal中提供的日期之間的毫秒數。

我已經與BSF斷言嘗試這一點 - JavaScript的,但它不工作:

if ((vars.put("my1",Date.parse(vars.get("db_created_date_1"))) - vars.put("my2",vars.get("insert_date"))) != 0) { 
    AssertionResult.setFailure(true); 
    AssertionResult.setFailureMessage("ERROR: The difference between db_created_date value (${db_created_date_1}) ${my1} and the dateTime (${insert_date}) ${my2} is too great."); 
} 

斷言結果: 斷言錯誤:錯誤 斷言失敗:真 斷言失敗消息:ERROR: db_created_date值(2013-11-11 16:22:53.863187)NaN和dateTime(2013-11-11 16:22:53.863187)NaN之間的區別太大了。

回答

0

我不確定Javascript是什麼,但你的NaN看起來很奇怪。以下Beanshell代碼適用於我:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 
long created = sdf.parse(vars.get("db_created_date_1")).getTime(); 
long insert = sdf.parse(vars.get("insert_date")).getTime(); 
long delta = Math.abs((created - insert)); 
if (delta > 20){ 
    //ka-boom 
}