使用 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)
}
但它只是将最后一个值设置为两个自定义属性。
问题是您的循环迭代了两次,第一次将第一个值分配给您的 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)
}
上面的代码对我来说 运行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)
我正在尝试从文本文件中读取两个值,这两个值在不同的行上
例如:
1234
5678
这是我试过的:
def f = new File('/testdata.txt')
def records = f.readLines();
records.each {
testRunner.testCase.setPropertyValue("IdOne",it)
testRunner.testCase.setPropertyValue("IdTwo",it)
}
但它只是将最后一个值设置为两个自定义属性。
问题是您的循环迭代了两次,第一次将第一个值分配给您的 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)
}
上面的代码对我来说 运行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)