我们正在使用SoapUI来测试我们的Web服务。此Web服务在可预测模式之后生成不同的时间戳,因此我们使用groovy脚本在SoapUI端生成它们,并在断言中使用这些来断言在Web服务器端断言正确的计算。到目前为止一切都那么好,它就像日期上的魅力(模式yyyy-MM-dd)和固定小时/分钟的时间戳(模式yyyy-MM-dd'T'HH:mm':00.000')。我们使用此脚本的变体来执行此操作,有时会添加天,月,小时等等:
def sdf = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
Calendar instance = Calendar.getInstance();
instance.setTime(new Date());
Date date= instance.getTime();
s = sdf.format(date)
return s
===
现在我遇到了以下问题:这个新项目会生成精确的时间戳,直到毫秒。问题是,我无法准确地预测到这一点,SoapUI比web服务更早地生成日期(这并不奇怪,只是一个事实),因此时间戳之间存在大约100到500毫秒的差异。
我尝试将通配符(*)(也启用它们)添加到此模式中以忽略毫秒部分,因为只要第二个是正确的,它被认为是不成功的,但我猜它们在groovy中不起作用脚本。有没有办法让它们有效?还有其他方法可以检查时间戳到第二个是否正确,然后忽略毫秒?
答案 0 :(得分:0)
这很容易!在脚本断言中找到你回来的日期与“现在”之间的差异,并断言差异小于某个容差。
def nowDate = new Date()
def sdf = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX")
def currentDate = sdf.parse(context.expand('${getCurrentDateTime#ResponseAsXml#//*:current}'))
def minutesDiff = Math.abs(nowDate.getTime() - currentDate.getTime()) / 1000 / 60
assert minutesDiff < 5 : "Too great of a difference with server!"