2016-03-21 48 views
1

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

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

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

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

有没有人试过这个?什么是最好的方式来做到这一点?

+0

你可以使用负载测试吗? – Rao

+0

这个想法不是一个负载测试,因为我没有测试性能,但与我的遗留系统保持一致。所以我从大量的请求中跑出来。 –

回答

0

以下是通过使用groovy步骤可以完成的方式。

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

  1. 测试请求步骤(肥皂,你所示)
  2. Groovy脚本步骤(这是我所建议的附加一个)

定义如下三个测试用例级别自定义属性像你需要的最小和最大次数它应该重复执行,并提供测试值并保持CURRENT_VALUE与相同这是一次性工作。因为每次测试运行时,每次都会增加CURRENT_VALUE,并且不希望更改MIN_VALUE。这样,每次执行测试用例后都不要重置该值。

  • MIN_VALUE
  • MAX_VALUE
  • CURRENT_VALUE

注意,这不能运行的各个步骤,即,测试用例有顺序执行,以满足您的需要,因为它有重复号时间,希望对你有好处。

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

变化:<req:number>XPTO</req:number>
为:<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()) 

这Groovy脚本一步基本上采用运行n-1倍的第一步小心,因为step 1已在groovy脚本测试步骤之前执行,其中n是需要执行的总次数(n = max - min )。

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