1

我想从属性文件中加载属性,如此处所述http://www.soapui.org/Scripting-Properties/working-with-properties.html。我正在使用 testrunner.sh 来运行测试。我想做类似的事情,./testrunner.sh -PServiceEndPoint=${serviceendpointvalue} sample_soapuitest.xml但它不起作用。

serviceendpointvalue 已在 properties.txt 中定义。我修改了 testrunner.sh 中的 JAVA_OPTS 以包含 properties.txt。

有人试过这个吗?有什么建议吗?

4

2 回答 2

2

我认为必须在从文件加载属性之前定义传递给 testrunner.sh 的参数。

不过,我 99% 确信您可以通过其他方式完成您想要的。

参数化请求中的端点。如果这是很多工作,我建议在文本编辑器中使用搜索和替换。我以前做过,而且效果很好。您只需注意服务端点可能出现的其他位置(例如在 WSDL/WADL/XSD 引用等中)

您希望在请求中为端点提供什么取决于您使用的是 SOAP 还是 REST。

For SOAP:  ${#Project#endpoint}
(assuming that your endpoint property is a project property)

For REST:  http://${#Project#server}

我忘记了为什么它必须有所不同,但弄清楚它是一件痛苦的事。

在属性字段中,数据如下所示:

SOAP: http://server:8080
REST: server:8080
(whatever port is relevant)

您可以使用文件设置这些属性。文件将在执行开始时被解析,请求将使用文件中的属性值。

于 2012 年 7 月 30 日编辑

您仍然可以使用我提到的方法。

此命令行运行我的示例测试,指定 test.props 文件。该文件中只有以下内容:

test=1234(由导出属性输出)

我的项目将名为 test 的项目属性设置为 1234 之外的另一个值。

ndfdXML 是我的项目名称.. 只是一个示例名称。

命令行:

C:\Program Files\SmartBear\soapUI-4.5.1\bin>testrunner.bat -Dsoapui.properties.ndfdXML=test.props ndfdXML-soapui-project.xml

soapUI 4.5.1 TestCase Runner
Configuring log4j from [C:\Program Files\SmartBear\soapUI-4.5.1\bin\soapui-log4j.xml]
14:32:29,283 INFO  [DefaultSoapUICore] initialized soapui-settings from     [C:\Users\chris.mead\soapui-settings.xml]
14:32:30,081 INFO  [WsdlProject] Loaded project from  [file:/C:/Program%20Files/SmartBear/soapUI-4.5.1/bin/ndfdXML-soapui-project.xml]
14:32:30,089 INFO  [AbstractTestPropertyHolderWsdlModelItem] Overriding 1 properties  from [test.props] in [ndfdXML]
14:32:30,702 INFO  [SoapUITestCaseRunner] Running soapUI tests in project [ndfdXML]
14:32:30,717 INFO  [SoapUITestCaseRunner] Running Project [ndfdXML], runType =  SEQUENTIAL
14:32:30,718 INFO  [SoapUITestCaseRunner] Running soapUI testcase [TestCase 1]
14:32:30,718 INFO  [SoapUITestCaseRunner] running step [CornerPoints - Request 1]
14:32:31,132 WARN  [AbstractSoapVersion] Ignoring validation error: error: cvc-complex- type.3.2.2: Attribute not allowed: encodingStyle@http://schemas.xmlsoap.o
rg/soap/envelope/ in element Envelope@http://schemas.xmlsoap.org/soap/envelope/
14:32:31,449 INFO  [SoapUITestCaseRunner] Assertion [SOAP Response] has status VALID
14:32:31,450 INFO  [SoapUITestCaseRunner] Assertion [XPath Match] has status VALID
14:32:31,450 INFO  [SoapUITestCaseRunner] running step [Properties]
14:32:31,454 INFO  [SoapUITestCaseRunner] running step [Property Transfer]
14:32:31,523 INFO  [SoapUITestCaseRunner] running step [Groovy Script]
14:32:31,912 INFO  [log] 1234

最后一行是这个 groovy 输出的:

log.info(context.expand('${#Project#test}'))

于 2012-07-28T18:02:34.643 回答
1

文档中的示例相当不完整;您可以强制从 Java System Properties 中获取值,如下所示:

systemProperty = context.expand('${=System.getProperty("soapui.home")}')
testRunner.testCase.setPropertyValue("systemProperty", systemProperty)
log.info("systemProperty="+testRunner.testCase.getPropertyValue("systemProperty"))
于 2012-07-30T10:10:50.993 回答