是否可以在单行动态属性中转换以下groovy请求? 该问题是在不使用groovy脚本的情况下在SOAPui请求中使用结果。 因为我有很多不同的日期要放在我的请求中,也在我的断言中。
import groovy.time.TimeCategory
use (TimeCategory) {
date = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date() -5.month)
}
我希望有一个动态的属性,我可以,当然,改变。例如:
<ech:date1>${Today - 5 month}</ech:date1>
<ech:date2>${Today - 4 month}</ech:date2>
<ech:date3>${Today - 3 week}</ech:date3>
编辑:更多信息
实际上,我有一个动态属性,它给我今天的日期,减去或加上x天,我可以在SOAPui中放入xml请求:
[这里,它给我今天的日期再加上20天]
${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date()+20)}
示例应用程序:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ech="http://echange.service.open.bodet.com">
<soapenv:Header/>
<soapenv:Body>
<ech:importRequests01>
<ech:Requests01ToImport>
<!--Zero or more repetitions:-->
<ech:Request01>
<ech:requestDate>${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date() +20)}</ech:requestDate>
<!--You may enter ANY elements at this point-->
</ech:Request01>
</ech:Requests01ToImport>
</ech:importRequests01>
</soapenv:Body>
</soapenv:Envelope>
所以,我想有同样的事情,但是要问今天的日期减去/加上x个月......等等。
答案 0 :(得分:1)
详情请见优秀的post:
import static java.util.Calendar.*
Date now = new Date()
now.clearTime()
Date nowMin5Month = now.updated( MONTH:now[ MONTH ] - 5 )
String nowMin3Week = now.updated( WEEK_OF_YEAR:now[ WEEK_OF_YEAR ] - 3 ).format( 'yyyy-MM-dd' )
答案 1 :(得分:1)
我不了解Soap UI,但mixing the Category into the respective types有帮助吗?
import groovy.time.TimeCategory
class TimeCategoryMixer {
static global() {
TimeCategory.metaClass.methods
.findAll { it.isStatic() && !it.name.startsWith("__") && it.name != "global" }
.each { it.nativeParameterTypes[0].mixin TimeCategory }
}
}
TimeCategoryMixer.global()
def d = Date.parse('yyyy-MM-dd', '2000-01-01')
assert d - 5.month == Date.parse('yyyy-MM-dd', '1999-08-01')
<强>更新强>
根据您的更新,这是怎么回事:
b="${use(groovy.time.TimeCategory) { Date.parse('yyyy-MM-dd', '2000-01-01') - 5.month} }"
assert b == Date.parse('yyyy-MM-dd', '1999-08-01').toString()
我认为SoapUI会对这样的事情感到高兴:
<ech:requestDate>${=use(groovy.time.TimeCategory) { Date.parse('yyyy-MM-dd', '2000-01-01') - 5.month}}</ech:requestDate>
答案 2 :(得分:0)
我找到了这个,举个例子来说&#34; 2014-7-10&#34;:
可从groovy中使用:
(Calendar.getInstance().get(Calendar.YEAR) - 0) +"-"+(Calendar.getInstance().get(Calendar.MONTH) +1)+"-"+(Calendar.getInstance().get(Calendar.DATE) - 0)
可以使用XML,也可以使用SoapUI测试请求:
${= (Calendar.getInstance().get(Calendar.YEAR) - 0) +"-"+(Calendar.getInstance().get(Calendar.MONTH) +1)+"-"+(Calendar.getInstance().get(Calendar.DATE) - 0)}
有了这个,我可以指定&#34; MONTH -5&#34;或&#34; MONTH + 2&#34;。 因为我在YEAR或DAY使用相同的东西,我可以为他们做同样的事情。
警告:不要忘记,在格里高利历中,第一个月,即1月,等于0。 这就是为什么我把&#34; ... get(Calendar.MONTH) +1 ......&#34;