我对groovy和soapUI相对较新,但我正在尝试使用测试套件来检查一些请求/响应。我有三个测试箱。其中两个依赖于我在第三个中设置的值。我的问题是,我不能在前两个中的任何一个中引用第三种情况中的值。前两个测试基本上运行相同的请求,一个用数据填充整个表单,另一个只填充所需的部分,clientTID是必需的部分之一(但我没有得到任何数据,所以我创建了一个名为“TransID”的值来完成它。因此,整个testSuite因第三个测试用例的值而失败。我写了这个:
TestCase1 / TestCase2 ,测试请求:
<clientOrderRequest>
<clientTID>${TransID}</clientTID>
<transactionCount>5</transactionCount>
<ClientInformation> unimportant information here </ClientInformation></clientOrderRequest>
TestCase3 ,Groovy脚本:
testRunner.testCase.setPropertyValue("TransID", String.valueOf((int)Math.random()*1000000000))
当它运行时,我得到:
TestCase1 / TestCase2 ,测试请求raw:
<clientOrderRequest>
<clientTID></clientTID>
<transactionCount>5</transactionCount>
<ClientInformation> Unimportant information here </ClientInformation></clientOrderRequest>
我觉得我错过了一些基本的东西,但是......我怎样才能让clientID中的字段出现?我尝试过bunch of different things,但我还没有显示transID值。
答案 0 :(得分:2)
您有两种选择。
一个(如果我使用这个数字,那么搞砸了格式化?):先运行TestCase3,然后在项目级别设置属性。
testRunner.testCase.testSuite.project.setPropertyValue("TransID", '(int)Math.random()*1000000000'.toString())
如果这是此测试用例唯一的功能,那么您甚至可以将上述代码放入测试套件SetUp脚本中(使用适当的编辑)。在随后的测试用例中,您可以将其称为${#Project#TransID}
二:在您的两个测试用例中,您可以使用 Groovy 属性扩展。它看起来像是:
${=testRunner.testCase.testSuite.getTestCaseByName('TestCase3').getPropertyValue('TransID')}
答案 1 :(得分:1)
${TransID}
将引用名为TransID的全局属性。您需要引用testCase属性。尝试将其更改为以下内容:
<clientOrderRequest>
<clientTID>${#TestCase#TransID}</clientTID>
<transactionCount>5</transactionCount>
<ClientInformation> unimportant information here </ClientInformation>
</clientOrderRequest>
如果这不起作用。尝试使用全局属性。只需执行以下操作即可。
testRunner.testCase.setPropertyValue("TransID", String.valueOf((int)Math.random()*1000000000))
到SoapUI.getGlobalProperties().getProperty('TransID').setValue(String.valueOf((int)Math.random()*1000000000))
${TransID}
引用保留在testCase&#39;