SoapUI响应中未显示的属性值

时间:2014-06-06 14:54:45

标签: xml groovy soapui

我对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值。

2 个答案:

答案 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>

如果这不起作用。尝试使用全局属性。只需执行以下操作即可。

  1. 在“首选项”中,创建名为“TransID”的全局属性
  2. 更改testRunner.testCase.setPropertyValue("TransID", String.valueOf((int)Math.random()*1000000000))SoapUI.getGlobalProperties().getProperty('TransID').setValue(String.valueOf((int)Math.random()*1000000000))
  3. 将您的${TransID}引用保留在testCase&#39;