SOAPUI - 更改请求元素值

时间:2016-03-21 20:46:13

标签: web-services soap soapui

我阅读了一些关于SOAPUI的文章,其中一篇是SoapUI getting request parameters in mock service script,我认为我正在寻找的解决方案是使用Groovy的。

我有一个SOAP Web服务,我想运行一些动态变化请求的睾丸。这个请求......

   <soapenv:Body>
      <req:MyrRquest>
         <req:number>XPTO</req:number>
      </req:MyrRquest>
   </soapenv:Body>

我的想法是从一个增加1的起始值开始循环,直到达到最大值。我想用这个不断变化的价值取代XPTO。

有没有人试过这个?最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

通过使用groovy步骤,可以采用以下方式。

使用两个测试步骤定义测试用例:

  1. 测试请求步骤(soap,您显示的那个)
  2. Groovy Script Step(这是我提议的另一个)
  3. 定义以下三个测试用例级自定义属性,例如您需要重复执行的最小和最大次数,并根据测试提供值并保持CURRENT_VALUE与{{1}相同这是一次性的工作。因为,MIN_VALUE每次都会增加,并且每次测试运行时都不想改变CURRENT_VALUE。这样,每次执行测试用例后都不要重置值。

    • MIN_VALUE
    • MAX_VALUE
    • CURRENT_VALUE

    请注意,这不能运行单独的步骤,即必须执行测试用例以满足您的需要,因为它必须重复次数,并希望对您有用。

    在测试请求中,需要使用当前值占位符。

    更改:MIN_VALUE
    收件人:<req:number>XPTO</req:number>

    这是groovy脚本代码:

    <req:number>${#TestCase#CURRENT_VALUE}</req:number>

    这个groovy脚本步骤基本上负责运行//Read the test case level properties as integers def min = context.testCase.getPropertyValue('MIN_VALUE') as Integer def max = context.testCase.getPropertyValue('MAX_VALUE') as Integer //Get the previous step name def pStepName = context.testCase.testStepList[context.currentStepIndex-1].name //min+1, because already test request is executed once ((min+1)..max).each { //update the current value incremented by 1 context.testCase.setPropertyValue('CURRENT_VALUE', it.toString()) log.info "Running step ${pStepName} for ${it} time" //run the previous test step testRunner.runTestStepByName(pStepName) } //finally resetting current value to min value as test finishes context.testCase.setPropertyValue('CURRENT_VALUE', min.toString()) 次的第一步,因为n-1已经在groovy脚本测试步骤之前执行,其中step 1是所需的总次数被执行(n)。

    如前所述,只需运行测试用例。