数据源Groovy脚本无限循环有限数据集

时间:2017-04-27 18:45:29

标签: soapui ready-api

我试图从xml中解析出一堆id并循环遍历它们以运行其他一些测试步骤。

xml基本归结为此(删除所有额外的):

<tr>
    <td>
        <a>11111</a>
    </td>
</tr>
<tr>
    <td>
        <a>11112</a>
    </td>
</tr>
<tr>
    <td>
        <a>11112</a>
    </td>
</tr>

我的代码如下。

// Defines the row to pass things in, will change based on iteration (hence the 'currentRow')
def row = testRunner.testCase.testSteps["DataSource"].currentRow
// Pulling in reponse
def responseAsXml = ***REST request xml response***
def xmlParser = new XmlSlurper().parseText(responseAsXml)
// Loading ids into list
def allIds = []
xmlParser.tr.each{ result ->
    allIds << result.td.a.text()

}
// Pass the next value into the ID property each time
allAccountIds.each{ id ->
        result["ID"] << id
}

它会正确地逐一给我这三个值,但它会永远循环,给我空白值。 我尝试了许多不同的方法将值传递给&#39;结果&#39;但没有改变这种情况。

我也试过直接抓取值,但没有区别(下面的例子)

xmlParser.tr.each{ result ->
    result["ID"] << result.td.a.text()

}

关于如何永久停止无限循环/传入空白值的任何建议都会很棒。

编辑: 我也尝试基本上完全匹配他们给你的例子

// Loading in ids into list
def allIds = []
xmlParser.tr.each{ result ->
    allIds << result.td.a.text()

}
// Pass the next value into the ID property each time
if((row +1) <= allIds.size){
    result["ID"] << allIds[row]
}

1 个答案:

答案 0 :(得分:0)

所以这可以考虑解决这个问题,但是我在DataSource选项下找到了一个漂亮的小选项,一旦值为空,检查时将停止运行。

该选项名为'Skip Loop on Empty',它对我有效。

enter image description here