JMeter BSF断言 - 比较日期变量

时间:2013-11-20 21:56:26

标签: javascript date time jmeter assertion

我正在JMeter中使用javascript尝试BSF断言。

在JMeter Debug Sampler中,我有以下两个变量: 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.");
}

断言结果: 断言错误:错误 断言失败:是的 断言失败消息:错误:db_created_date值(2013-11-11 16:22:53.863187)之间的区别NaN和dateTime(2013-11-11 16:22:53.863187)NaN太大了。

1 个答案:

答案 0 :(得分: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
}