soapui从属性文件访问属性

时间:2012-07-27 19:02:24

标签: soapui

我想按照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。

有人试过吗?任何sugesstions?

2 个答案:

答案 0 :(得分: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)

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

于07/30/12编辑

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

此命令行运行我的示例测试,指定test.props文件。该文件就是这样的:

测试= 1234 (它由导出属性输出)

我的项目将名为test set的项目属性设置为除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( '$ {#项目#测试}'))

答案 1 :(得分:1)

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

systemProperty = context.expand('${=System.getProperty("soapui.home")}')
testRunner.testCase.setPropertyValue("systemProperty", systemProperty)
log.info("systemProperty="+testRunner.testCase.getPropertyValue("systemProperty"))