我阅读了一些关于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。
有没有人试过这个?最好的方法是什么?
答案 0 :(得分:1)
通过使用groovy步骤,可以采用以下方式。
使用两个测试步骤定义测试用例:
定义以下三个测试用例级自定义属性,例如您需要重复执行的最小和最大次数,并根据测试提供值并保持CURRENT_VALUE
与{{1}相同这是一次性的工作。因为,MIN_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
)。
如前所述,只需运行测试用例。