如何让 readyapi(以前称为 soapui)尊重我在 pom.xml 中指定的值?

Posted

技术标签:

【中文标题】如何让 readyapi(以前称为 soapui)尊重我在 pom.xml 中指定的值?【英文标题】:How do I get readyapi (formerly soapui) to respect the values I specify in pom.xml? 【发布时间】:2016-09-03 21:57:31 【问题描述】:

我的 pom.xml 看起来像这样

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cvent</groupId>
    <artifactId>soa-readyapi</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>OnSite Solutions ReadyAPI Tests</name>
    <properties>
        <soapui.environment/>
        <soapui.test-suite/>
        <soapui.test-case/>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>com.smartbear</groupId>
                <artifactId>ready-api-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <projectFile>$soapui.projectFile</projectFile>

                            <iface>IOrderService</iface>
                            <tool>wsi,axis1,axis2</tool>
                            <settingsFile>soapui-settings.xml</settingsFile>
                            <!-- <environment>$soapui.environment</environment> -->
                            <outputFolder>output</outputFolder>
                            <junitReport>true</junitReport>
                            <printReport>true</printReport>
                            <projectProperties>
                                <value>one_api="https://someurl:4000"</value>
                                <value>two_api="https://someurl:4001"</value>
                                <!-- <value>environment=$soapui.environment</value> -->
                            </projectProperties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

当我尝试使用以下命令运行此项目时 -

mvn clean test -Dsoapui.projectFile=smokeTest

无论在 ReadyAPI 中设置的最后一个活动环境如何,测试似乎都可以运行。它忽略了

   <value>one_api="https://someurl:4000"</value>
   <value>two_api="https://someurl:4001"</value>

我知道我可以使用环境功能来执行此操作,但这对我当前的用例没有帮助。我想在运行时设置它,现在我正在对 pom.xml 进行硬编码以查看它是否可行,但它没有。

关于为什么 readyAPI 忽略我在 pom.xml 中设置的值的任何想法?

谢谢

【问题讨论】:

您能说明您是如何使用这些项目属性的吗?在端点? 项目属性&lt;value&gt;one_api="https://someurl:4000"&lt;/value&gt;&lt;value&gt;two_api="https://someurl:4001"&lt;/value&gt; 用作休息服务端点。如果这没有意义,请告诉我 去掉引号:&lt;value&gt;one_api=https://someurl:4000&lt;/value&gt;. 我试过没有区别 你需要展示你是如何在你的项目中使用这些值的。 【参考方案1】:

我进行以下测试以检查这是否有效。

首先我创建一个Groovy testStep 并使用以下代码展开项目属性以检查是否从pom.xml 正确加载:

log.info context.expand('$#Project#one_api')
log.info context.expand('$#Project#two_api')

然后我还添加了一个 REST testStep 并将$#Project#one_api 设置为端点:

最后我接受你的pom.xml(因为@SiKing 建议有必要从值中删除引号,作为one_api=https://someurl:4000 而不是one_api="https://someurl:4000")然后执行mvn clean test -Dsoapui.projectFile=./soaptestprj.xml

mvn 跟踪显示以下内容:

15:16:37,406 INFO  [SoapUIProTestCaseRunner] running step [Groovy Script INIT]
15:16:37,653 INFO  [log] https://someurl:4000
15:16:37,653 INFO  [log] https://someurl:4001
15:16:37,655 INFO  [SoapUIProTestCaseRunner] running step [initProcess]
15:16:40,491 ERROR [WsdlSubmit] Exception in request: java.net.UnknownHostException: someurl

尽管显然它无法解析someurl,但似乎插件正确传递了&lt;projectProperties&gt;

我的猜测是问题可能是您没有正确引用 project 属性,请检查您是否将其正确指定为 $#Project#YourProperty

希望对你有帮助,

【讨论】:

以上是关于如何让 readyapi(以前称为 soapui)尊重我在 pom.xml 中指定的值?的主要内容,如果未能解决你的问题,请参考以下文章

学习 WebService 第三步:一个简单的实例(SoapUI测试REST项目)

如何使用 ReadyAPI 3.6.0 自动生成 JWT

readyapi/maven 集成 - 无法传输工件

SoapUI进行性能测试

ReadyAPI:使用 ProjectA 中的 groovy 脚本将一些脚本添加到 ProjectB 的 TestSuite 级别的“设置脚本”

soapui怎么让响应报文换行