数据源 Groovy 脚本在有限数据集上发生无限循环
Data Source Groovy Script Infinite Loop Occuring Over Finite Data Set
我正在尝试从 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
}
它会正确地一一给我这三个值,但随后它会一直循环下去,给我空白值。
我尝试了多种将值传递给 'result' 的不同方法,但没有任何改变。
我也尝试过直接获取值但没有区别(下面的示例)
xmlParser.tr.each{ result ->
result["ID"] << result.td.a.text()
}
任何关于如何永远停止这个无限 looping/passing 的空白值的建议都会很棒。
编辑:
我也试着基本上完全匹配他们给你的例子所做的事情
// 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]
}
所以这可能被认为是解决这个问题的方法,但我在 DataSource 选项下发现了一个漂亮的小选项,选中后一旦值为空就会停止 运行。
该选项称为 'Skip Loop on Empty',对我有用。
我正在尝试从 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
}
它会正确地一一给我这三个值,但随后它会一直循环下去,给我空白值。 我尝试了多种将值传递给 'result' 的不同方法,但没有任何改变。
我也尝试过直接获取值但没有区别(下面的示例)
xmlParser.tr.each{ result ->
result["ID"] << result.td.a.text()
}
任何关于如何永远停止这个无限 looping/passing 的空白值的建议都会很棒。
编辑: 我也试着基本上完全匹配他们给你的例子所做的事情
// 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]
}
所以这可能被认为是解决这个问题的方法,但我在 DataSource 选项下发现了一个漂亮的小选项,选中后一旦值为空就会停止 运行。
该选项称为 'Skip Loop on Empty',对我有用。