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

Read from file and save in Property using groovy script

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

例如:

1234
5678

这是我试过的:

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

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

}

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

问题是您的循环迭代了两次,第一次将第一个值分配给您的 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)     
}

上面的代码对我来说 运行ning 但我想从文本文件中获取值并动态传递数组,以便可以处理 N 个值

给定 - 一个包含数字列表(用户 ID)的文本文件,每次文本值都应递增。

预期:每次应从文本文件中提取一行并将其存储到项目级别的自定义 属性 中,这样我就可以 运行 具有不同 ID 的相同测试步骤。

def f = new File('C:\GroovyTEst.txt') 
def records = f.readLines()
testRunner.testCase.testSuite.project.setPropertyValue("VendorRideid",records[0]) // here the value should be dynamic so that i can read one by one values from the text file 

def tCase = testRunner.testCase.testSuite.testCases["ChangeRidestatus-accepted"]
def tStep = tCase.testSteps["Pending"]
    tStep.run(testRunner, context)
def tStep1 = tCase.testSteps["Change RideStatus - Accepted"]
    tStep1.run(testRunner, context)