如何使用beanshell/groovy在jmeter中以某种模式增加“HH”(小时)和“mm”(分钟)?
问题描述:
我正在编写一个脚本,我必须为预约预订插槽,并且插槽的持续时间为15分钟。 假设,如果我想预订从17:00预约到17:15,然后在JMeter的请求来像这个 - >如何使用beanshell/groovy在jmeter中以某种模式增加“HH”(小时)和“mm”(分钟)?
StartHour-17 StartMIn-00 EndHour-17 EndMinute-15
可以使用csv config来选择插槽,但是我想在jmeter中使用beanshell/groovy自动化,因为csv在准备测试数据时需要时间。 所以有可能在beanshell中写入,这样每次迭代时隙就会自动增加15分钟,即下一个要选择的时隙为17:15-17:30,并且jmeter中的请求为: StartHour-17 StartMIn-15 EndHour-17 EndMinute-30
我试着在BeanShell中,但无法得到理想的结果作为请求正在以分钟结束小时和结束分钟开始时间的开始时间的条款。
答
在Groovy中,您可以使用TimeCategory API来操作日期和时间。
示例代码到15分钟添加到当前时间会是这样的:
def now = new Date()
log.info('Before: ' + now.format('HH:mm'))
use(groovy.time.TimeCategory) {
def nowPlus15Mins = now + 15.minutes
log.info('After: ' + nowPlus15Mins.format('HH:mm'))
}
您可以从JMeter Variables访问前值(S)和存储使用vars
速记矗立导致放进去为JMeterVariables类实例,并提供对所有JMeter变量的读/写访问。
有关在JMeter中使用Groovy脚本的更多详细信息,请参阅Apache Groovy - Why and How You Should Use It。
答
你可以做这样的事情:
def startDate = new Date()
startDate.set(hourOfDay: 17, minute: 0)
use (groovy.time.TimeCategory) {
5.times {
def start = startDate.format("'StartHour-'HH' StartMin-'mm")
def endDate = startDate + 15.minutes
def end = endDate.format("'EndHour-'HH' EndMin-'mm")
println "$start $end"
startDate = endDate
}
}
它给你:
StartHour-17 StartMin-00 EndHour-17 EndMin-15
StartHour-17 StartMin-15 EndHour-17 EndMin-30
StartHour-17 StartMin-30 EndHour-17 EndMin-45
StartHour-17 StartMin-45 EndHour-18 EndMin-00
StartHour-18 StartMin-00 EndHour-18 EndMin-15
你出15个分钟的增量,但所有的例子在30个分钟为增量。 – doelleri
对不起,它的增量是15分钟,即StartTime-17:00 StartMin-17:15 EndHour-17:00 EndMin-17:30。 不便之处.. –