Configuration con:设置工作区和项目文件中的元素

Configuration con:设置工作区和项目文件中的元素,configuration,soapui,Configuration,Soapui,我正在使用SoapUI的免费版本(版本4.6.1)和多个工作区。我的挫折之一是SoapUI似乎不支持工作区级别的自定义属性 我查看的*-soapui workspace.xml文件包含一个空的con:settings元素(即)。在我回顾过的*-soapui project.xml文件中也是如此 我的直觉和希望是,这些元素允许在我的常规soapui settings.xml文件中看到的设置中添加或覆盖工作区或项目级别的设置,例如加载给定工作区时需要的其他全局属性 但是,当我创建一个包含以下内容的设

我正在使用SoapUI的免费版本(版本4.6.1)和多个工作区。我的挫折之一是SoapUI似乎不支持工作区级别的自定义属性

我查看的
*-soapui workspace.xml
文件包含一个空的
con:settings
元素(即
)。在我回顾过的
*-soapui project.xml
文件中也是如此

我的直觉和希望是,这些元素允许在我的常规
soapui settings.xml
文件中看到的设置中添加或覆盖工作区或项目级别的设置,例如加载给定工作区时需要的其他全局属性

但是,当我创建一个包含以下内容的设置文件时,
SomeService测试soapui settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-settings xmlns:con="http://eviware.com/soapui/config">
<con:setting id="GlobalPropertySettings@properties"><![CDATA[<xml-fragment xmlns:con="http://eviware.com/soapui/config">
  <con:property>
    <con:name>WorkspaceCustomPropertyTest</con:name>
    <con:value>some value</con:value>
  </con:property>
</xml-fragment>]]>
</con:setting>
</con:soapui-settings>
…什么也没发生

加载工作区时,我没有收到错误,但我也没有收到任何指示,表明
con:settings
元素正在执行任何操作。例如,SoapUI首选项>全局属性未列出
WorkspaceCustomPropertyTest
属性

当然,我可以继续修补,但是对工作区和项目文件
con:settings
元素的解释会有所帮助

到目前为止,搜索工作区和项目文件
con:settings
元素的解释,以及更广泛的搜索,都没有得到任何结果

有人能解释一下如何使用工作区和项目文件
con:settings
元素吗

或者,有人能解释一下如何使用免费版的SoapUI实现类似的结果(即工作区级自定义属性)吗?

那怎么办

创建一个ini(“myconfig.groovy”)文件(“假设此文件将位于项目文件的同一目录中”):

使用此groovy脚本获取属性:

// Script imports
import com.eviware.soapui.support.GroovyUtils
import groovy.util.ConfigSlurper

// Grovvy utils handle OS directories path abstraction
def groovyUtils = new GroovyUtils(context)

def config = new ConfigSlurper().parse(new File(groovyUtils.projectPath + '/myconfig.groovy').toURL())

// Just logging the property but you can set the property here
log.info config.global_property

然后,您可以在运行时将值添加到所需对象。

在工作区级别似乎不可能这样做。您可以在其中一个测试级别执行此操作,请参阅:

SoapUI确实支持全局属性

在文件>首选项>全局属性中


在这里,可以指定跨越所有项目的全局属性。遗憾的是,目前,它将用于所有工作空间。希望这能有所帮助,使用groovy脚本手动处理一切对我来说似乎有点过分。

您的工作区级别设置文件中有哪些数据?不能创建属性文件并使用groovy读取它吗?每个工作区都有一个单独的文件?@abhishekassana:只有基本的名称-值对-例如,
ServiceHost=server01.some.domain
serviceditory=/vdir1/vdir2/
etcetera-否则我需要在项目之间重复这些。我想,将它们从工作区属性文件读入每个项目中的文件是一个潜在的解决方法。谢谢。我知道在SoapUI中可以在其他级别定义属性。我想要的是工作区级别的属性,或者与之等效的属性。这可以将属性添加到项目加载脚本范围内的
config
,我在其中添加了代码。真正需要的是在项目范围内引用
config
的属性,例如Groovy脚本测试步骤。试一试,我得到了错误
groovy.lang.MissingPropertyException:No-this-property:config for-class:Script1
。将slurped属性添加到项目中定义的
config
,我想这可能是在项目范围内引用它们的一种方式。想法?我想您可以将其添加到项目加载脚本中。使用project.setPropertyValue('global_property',config.global_property)设置属性。这将适用于所有测试套装和案例。另一个选项是在系统中设置一个环境,并使用如下内容:${#system#my#u variable}。但我的选择是在测试套件上使用set脚本,我从未使用过项目脚本;但是,对于为项目范围的访问所使用的每个工作区级属性,您只需设置一个自定义项目属性,这是一个公平的观点。嗯!:在每个工作区项目中使用工作区级属性文件和相关Groovy的详细说明,我可能不知道如何利用我问过的
con:settings
元素,但请注意,这并不重要——抛开关于最小化和维护常见项目代码以及处理潜在项目自定义属性混乱(即我可以解决的问题)的顾虑。
global_property='Global value'
// Script imports
import com.eviware.soapui.support.GroovyUtils
import groovy.util.ConfigSlurper

// Grovvy utils handle OS directories path abstraction
def groovyUtils = new GroovyUtils(context)

def config = new ConfigSlurper().parse(new File(groovyUtils.projectPath + '/myconfig.groovy').toURL())

// Just logging the property but you can set the property here
log.info config.global_property