我正在尝试从文本文件中读取两个值,这两个值在不同的行上
例如:
1234年 5678这就是我的尝试:
def f = new File('/testdata.txt')
def records = f.readLines();
records.each {
testRunner.testCase.setPropertyValue("IdOne",it)
testRunner.testCase.setPropertyValue("IdTwo",it)
}
但它只为两个自定义属性设置了最后一个值。
答案 0 :(得分:1)
问题是你的循环迭代两次,第一次将第一个值分配给IdOne
和IdTwo
属性,第二次迭代用第二个值覆盖两个属性;因此,您拥有两个属性中的最后一个迭代值。注释中@ 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'