从文件中读取并使用groovy脚本保存在Property中

时间:2016-11-04 02:37:39

标签: groovy soapui

我正在尝试从文本文件中读取两个值,这两个值在不同的行上

例如:

1234年 5678

这就是我的尝试:

def f = new File('/testdata.txt') 
def records = f.readLines();

records.each {
    testRunner.testCase.setPropertyValue("IdOne",it)
    testRunner.testCase.setPropertyValue("IdTwo",it)

}

但它只为两个自定义属性设置了最后一个值。

2 个答案:

答案 0 :(得分:1)

问题是你的循环迭代两次,第一次将第一个值分配给IdOneIdTwo属性,第二次迭代用第二个值覆盖两个属性;因此,您拥有两个属性中的最后一个迭代值。注释中@ user1708042注释的可能解决方案可能根本不是迭代并直接设置属性的值:

def f = new File('/testdata.txt') 
def records = f.readLines()
testRunner.testCase.setPropertyValue("IdOne",records[0])     
testRunner.testCase.setPropertyValue("IdOne",records[1])

另一种可能的解决方案是组合两个列表;一个具有属性名称,另一个具有Map中的值,然后迭代映射条目设置属性名称和属性值,例如:

def propertyName = ['IdOne','IdTwo']
def records = ['1234','5678'] // def records = new File('/testdata.txt').readLines()

def mapProperties = [propertyName,records].transpose().collectEntries()

mapProperties.each{ name, value ->
    testRunner.testCase.setPropertyValue(name,value)     
}

答案 1 :(得分:0)

上面的代码正在为我运行,但是我想从文本文件中获取值并将其动态传递给数组,以便可以处理N个值

给出-一个带有数字列表(用户ID)且每次文本值应递增的文本文件。

预期:每次应提取文本文件中的一行并将其存储到项目级别的custom属性中,以便我可以使用不同的ID运行相同的测试步骤。

    implementation 'androidx.room:room-runtime:2.1.0-alpha03'
    annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha03'

    // ViewModel and LiveData
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha01'
    annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.1.0-alpha01'