SOAPUI使用groovy从文件加载自定义属性

时间:2016-06-09 10:19:20

标签: groovy soapui

我正在尝试编写一个groovy脚本,该脚本使用属性文件中的信息加载测试套件的自定义属性。 属性文件有大约6个不同的属性 我已经看过很多不同的方法,例如从属性测试步骤加载并试图用groovy扩展属性,但是没有成功。

如果有人可以就如何实现这一点提出建议,我们将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:3)

这是一个groovy脚本,它读取属性文件并将其设置为test suite level

def props = new Properties()
//replace the path with your file name below. use / instead of \ as path separator even on windows platform.
new File("/absolute/path/of/test.properties").withInputStream { s ->
  props.load(s) 
}
props.each {
    context.testCase.testSuite.setPropertyValue(it.key, it.value)
}

以上脚本为当前套件加载测试套件级别,其中存在groovy脚本。

答案 1 :(得分:0)

不幸的是,就我而言,我想使属性具有与输入文件相同的顺序,即。排序,并且此方法无效。 我想加载一个包含排序属性的“项目属性”文件,每次使用此方法时,它都会将它们存储为未排序状态。 我不得不使用一种更直接的方法(见下文)。如果有人知道更优雅/更实用的方式,我很感兴趣

def filename = context.expand( '${#TestCase#filename}' )

def propertiesFile = new File(filename)
assert propertiesFile.exists(), "$filename does not exist"

project = testRunner.testCase.testSuite.project

//Remove properties
project.propertyNames.collect{project.removeProperty(it)}

//load the properties of external file
propertiesFile.eachLine {
    line->
    firstIndexOf = line.indexOf('=') // properties as set as key=value in the file
    key = line.substring(0, firstIndexOf)
    value = line.substring(firstIndexOf+1)
    project.setPropertyValue(key, value)
}