SOAP-UI:可以在扩展中增加一个属性吗?

问题描述 投票:0回答:1

我有一个简单的测试请求,我一直在向我们的应用程序发送。为了测试,所有的字段都可以是相同的,只有一个字段--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". 在响应中,有一个字段 "数据 "显示你发送的内容。

soapui
1个回答
0
投票

你可以有一个Groovy脚本测试步骤,在每次Web服务调用后运行并更新属性。

def txid = testRunner.testCase.testSuite.project.getPropertyValue("transaktionid")
testRunner.testCase.testSuite.project.setPropertyValue("transaktionid", ${txid + 1})
© www.soinside.com 2019 - 2024. All rights reserved.