【问题标题】:How to integrate soapUI with Jenkins?如何将soapUI与Jenkins集成?
【发布时间】:2011-10-02 15:47:32
【问题描述】:

有人知道将soapUI 测试添加到我的CI 构建的好方法吗?

【问题讨论】:

    标签: soap hudson jenkins soapui


    【解决方案1】:

    soapUI 通过 Maven 或 Ant 提供测试自动化。 Maven 集成描述为HERE

    我在一个月前尝试过,但 eviware 存储库出现了一些奇怪的问题......因此我现在通过 Ant 运行我的测试。你要做的就是调用soapUI bin目录下的testrunner.bat(或testrunner.sh)脚本。您可以找到可用的参数HERE

    您必须在 Hudson 构建服务器上安装soapUI。然后,您只需创建一个通过 Ant 构建的新作业。

    样本build.xml:

    <project name="IntegrationTest" default="soapui-tests" basedir=".">
        <description>Runs the soapUI integration tests</description>
        <property file="build.properties"/>
    
        <target name="checkos">
            <condition property="testrunner.cmd" value="${soapUI.home}/bin/testrunner.bat">
                    <os family="windows" />
            </condition>
            <condition property="testrunner.cmd" value="${soapUI.home}/bin/testrunner.sh">
                    <os family="unix" />
            </condition>
        </target>
    
        <target name="soapui-tests" depends="checkos">
            <exec executable="${testrunner.cmd}"
                  failonerror="yes"
                  failifexecutionfails="yes"
            >    
                <arg value="-e ${service.endpoint}"/>
                <arg value="-P dbUrl=${db.Url}"/>
                <arg value="-rajf"/>
                <arg path="${report.dir}"/>
                <arg path="${soapui.project.folder}"/>
            </exec>
        </target>
    </project>
    

    【讨论】:

    【解决方案2】:

    其实很简单……

    使用以下(示例)创建一个 git 存储库:

    ├── pom.xml
    ├── RestAPI-negativeTestSuite.xml
    └── RestAPI-positiveTestSuite.xml
    

    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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <name>Test soapui</name>
        <groupId>tdrury</groupId>
        <artifactId>com.example.soapuitests</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <description>blah blah</description>
        <build>
            <plugins>
                <plugin>
                    <groupId>com.smartbear.soapui</groupId>
                    <artifactId>soapui-maven-plugin</artifactId>
                    <version>5.0.0</version>
    
                    <executions>
                        <execution>
                            <id>RestAPI-positiveTestSuite</id>
                            <configuration>
                                <projectFile>RestAPI-positiveTestSuite.xml</projectFile>
                                <outputFolder>target/surefire-reports</outputFolder>
                                <testSuite>Positive cases</testSuite>
                                <junitReport>true</junitReport>
                                <exportwAll>true</exportwAll>
                                <printReport>true</printReport>
                                <testFailIgnore>true</testFailIgnore>
                            </configuration>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <phase>test</phase>
                        </execution>
    
                        <execution>
                            <id>RestAPI-negativeTestSuite</id>
                            <configuration>
                                <projectFile>RestAPI-negativeTestSuite.xml</projectFile>
                                <outputFolder>target/surefire-reports</outputFolder>
                                <testSuite>Negative tests</testSuite>
                                <junitReport>true</junitReport>
                                <exportwAll>true</exportwAll>
                                <printReport>true</printReport>
                                <testFailIgnore>true</testFailIgnore>
                            </configuration>
    
                            <goals>
                                <goal>test</goal>
                            </goals>
    
                            <phase>test</phase>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    在 Jenkins 中创建一个新的 Maven 作业并将其指向 git repo 和 pom.xml,作为目标填写 test

    就是这样

    【讨论】:

    • pom.xml 示例末尾缺少 标记
    【解决方案3】:

    以下脚本在 hudson 中作为自定义构建脚本的一部分被调用,并传递目标主机的名称来调用测试。

    #!/bin/bash -x
    
    #
    #   Regression Test Script for performing regression testing
    #   
    #   Note: Caution should be exercised where more than one set
    #   of test suites exist in the same soapui project
    #
    #   Script invokes SOAPUI testrunner to perform tests
    #
    #   Script arguments:
    #       target host
    #
    
    if [ $# -ne 1 ];
    then
        echo "Usage: $0 target_host"
        exit 1
    fi
    TargetHost=$1
    curdir=`pwd`
    ProjectFile=$curdir/testing/SoapUI/YourProject.xml
    SOAPUI_HOME=/soapuipath/soapui
    TEST_RUNNER=testrunner.sh
    
    if [ ! -f "$ProjectFile" ];
    then
        echo "Project File does not exist"
        exit 1
    fi
    ###############################################################################################
    ## Check the status of the last shell operation and if failed exit
    ###############################################################################################
    
    ## --------------------------------------------------------------------------------
    ##  Return the operating system pathname for the datafiles for the specified database
    ##
    ##  Arguments:
    ##      The return value to check.  zero indicates all is good.  Non-zero indicates error
    ##      The error message to display when exiting
    ##      
    ##  Exits if error detected
    check_status()
    {
        if [ $# -ne 2 ];
        then
            echo "$0: Programming error: Report to sysadmin@yourdomain.com"
            exit -1
        fi
        exit_code=$1
        err_msg=$2
        if [ $exit_code -ne 0 ];
        then
            echo $err_msg
            exit $exit_code
        fi
    }
    
    
    cd $SOAPUI_HOME/bin
    bash -x ./$TEST_RUNNER -s"TestSuite 1" -c"TestCase 1 - Sanity Tests" -ehttps://$TargetHost:port/testurl "$ProjectFile"
    check_status $? "Failed to pass regression testing "
    
    cd "$curdir"
    

    【讨论】:

      【解决方案4】:

      为什么不使用 JUnit 集成? http://www.soapui.org/Test-Automation/integrating-with-junit.html

      编辑:我们使用这种方法得到了一些奇怪的性能数字(秒而不是毫秒),原来是因为使用了 SoapUI Runner。在 SoapUI 中运行相同的负载测试给出了正确的结果。也许我们没有正确使用 API(虽然看起来很简单)。我们切换到使用 ContiPerf2 并使用客户端代码(无论如何我们都必须生成)来运行测试并获得正常结果。

      【讨论】:

      • 所以我将 SOAPUI 测试作为单元测试运行?如果这可行,我只能假设它还会生成 Jenkins/hudson 可以可视化的报告?
      • 是的,这就是我们所做的。就像普通的单元测试一样。但是没有生成特殊报告,只是失败或成功。我们确实编写了一些代码来从soap runner 中提取日志以显示测试失败的原因,但这只是几行代码。
      【解决方案5】:

      我使用soapui-extension maven plugin - 它比官方的 Maven 插件好得多。只需将其配置为生成 JUnit 样式的结果,以便 jenkins 可以获取它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-09
        • 2021-09-08
        • 2019-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        相关资源
        最近更新 更多