我有一个简单的测试请求,我一直在向我们的应用程序发送。为了测试,所有的字段都可以是相同的,只有一个字段--transactionId--需要与之前的请求不同。我为它定义了一个属性,并将其插入到XML中,就像这样。
<ns:transaktionid>${#Project#transaktionid}</ns:transaktionid>
...这样就能正常工作了。然而,我总是需要在发送下一个请求之前改变(通常是递增)该属性值,这很繁琐。我知道我可以定义一个额外的测试步骤来完成这样的计算,但我发现这有点复杂。难道就没有更简单的解决方案吗?
考虑到可以在这种属性扩展中嵌入groovy代码,我想知道,我是否可以简单地自动增加该属性值。
因此,我尝试了
<ns:transaktionid>${=(#Project#transaktionid++)}</ns:transaktionid>
...但没有成功,另一个尝试是:
<ns:transaktionid>${=(#Project#transaktionid = ${#Project#transaktionid}+1)}</ns:transaktionid>
...也没有用.
我在网上查了很多资料,经过大量的试验和错误后,我找到了这个可行的解决方案。
<ns:transaktionid>${=def project = request.operation.interface.project; project.setPropertyValue("transaktionid", res = Integer.toString(Integer.parseInt(project.getPropertyValue("transaktionid"))+1)); res}</ns:transaktionid>
...但是... 我的意思是: 拜托!真的是这样吗?是否有 真的 有没有更短、更优雅的解决方案来实现这一目标?
一些善良的灵魂有更好的想法或更好地掌握这里的适用语法?任何有用的提示将被感激!
PS.: 我通过定义一个项目属性 "transaktionid",给它一个数值,比如说'10',然后简单地将上面的行发送至echo服务器,在"http:/httpbin.orgpost". 在响应中,有一个字段 "数据 "显示你发送的内容。
你可以有一个Groovy脚本测试步骤,在每次Web服务调用后运行并更新属性。
def txid = testRunner.testCase.testSuite.project.getPropertyValue("transaktionid")
testRunner.testCase.testSuite.project.setPropertyValue("transaktionid", ${txid + 1})