需要通过Gradle脚本的指导来执行soapui项目xmls并生成报告html

时间:2016-03-03 11:13:23

标签: gradle soapui

我有一个gradle脚本来执行一个SOAPUI测试套件。目前,失败的日志位于同一文件夹中。我希望获得所有通行证并失败 要在单独的文件夹中创建的日志。我想要一个index.html类似的报告来查看执行通过/失败报告。它是否创建了任何testsuite.xml来存储每个测试用例的传递和失败数据,如ANT? 我不熟悉gradle。所以我需要一个好的gradle脚本来帮助我解决这个问题。我当前的gradle脚本在下面给出,只执行一个测试套件:

class SoapUITask extends Exec {
    String soapUIExecutable = '/SOAPUIpath/SoapUI-5.1.2/bin/testrunner.sh'
    String soapUIArgs = ''
    public SoapUITask(){
        super()
        this.setExecutable(soapUIExecutable)
        //printReport=true

    }   
    public void setSoapUIArgs(String soapUIArgs) {
        this.args = "$soapUIArgs".trim().split(" ") as List
    }                                                                             
}
// execute SOAPUI
task executeSOAPUI(type: SoapUITask){
   // simply pass the project path as argument,
   // note that the extra " are needed
   soapUIArgs = '/path/of/SOAPUI project xml/src/PCDEMO-soapui-project.xml'
}

2 个答案:

答案 0 :(得分:1)

如果您想从SOAPUI documentation生成HTML报告,可以使用以下参数:

  

-f - 指定根目录,其中运行器将保存测试结果文件。如果指定的目录不存在,那么它将是   创建

     

-F指定导出报告的格式。用法:-F。支持的格式包括PDF,XLS,HTML,RTF,CSV,TXT和XML。如果未指定参数,则使用PDF。至   导出结果有多种格式,用逗号分隔。对于   例如,-FPDF,XML,CSV。

注意:正如您在文档中看到的那样,-F参数仅适用于PRO版本。如果您在尝试使用-F参数时使用免费版本,则会获得以下输出:     org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -FPDF

因此,您可以修改task executeSOAPUI以添加-f location-FHTML,如下所示:

// execute SOAPUI
task executeSOAPUI(type: SoapUITask){
   // simply pass the project path as argument,
   // note that the extra " are needed
   soapUIArgs = '-f "path/of/outputReports" -FHTML "/path/of/SOAPUI project xml/src/PCDEMO-soapui-project.xml"'
}

如果您希望获得Junit Html样式报告,可以尝试使用follow参数(仅在PRO版本中可用):

  

-R - 指定报告数据的类型。

     

用法:-R。报告类型可以是以下之一:

     

项目报告 - 以-F参数指定的格式生成报告。运行器将报告文件保存到-f参数指定的目录中。根据-A参数值,文件可以是   组织成子目录。

     

TestSuite报告 - 如上所述,但适用于TestSuites。

     

TestCase报告 - 如上所述,但适用于TestCases。

     

JUnit样式的HTML报告 - 将报告生成为JUnit样式的HTML文件。请参阅JUnit样式的HTML报告。使用此值时,运行器将忽略-F和-A参数。

     

数据导出 - 使用报告数据生成XML文件。请参见数据导出。使用此参数时,-F必须是XML或不能指定。

     

使用-f参数指定运行器所在的目录   保存生成的报告文件。

使用此task可能是:

// execute SOAPUI
task executeSOAPUI(type: SoapUITask){
   // simply pass the project path as argument,
   // note that the extra " are needed
   soapUIArgs = '-f "path/of/outputReports" -R"JUnit-Style HTML Report" "/path/of/SOAPUI project xml/src/PCDEMO-soapui-project.xml"'
}

免责声明:我没有PRO版本,因此我无法测试我在答案中提供的任何选项。

答案 1 :(得分:0)

我将这个答案作为一个单独的POST发布,因为我认为对于没有PRO版本的人来说这是一个很好的选择,并且足够好以获得他们的空间。

因此,可能的替代方法是生成Junit Xml报告文件,然后使用Xml报告和Xslt转换生成Html。

要生成Junit Xml报告,您可以使用-j参数,也可以-f指定文件夹。

然后你可以创建一个gradle任务来执行XSLT转换(我的解决方案基于this solution on github)。

所以你的build.gradle可能是:

repositories {       
     maven { url "http://repo.maven.apache.org/maven2" }
}

configurations { 
  antClasspath 
} 
// dependency for XMLResultAggregator task
dependencies { 
  antClasspath 'org.apache.ant:ant-junit:1.8.2' 
} 


class SoapUITask extends Exec {
    String soapUIExecutable = '/SOAPUIpath/SoapUI-5.1.2/bin/testrunner.sh'
    String soapUIArgs = ''

    public SoapUITask(){
        super()
        this.setExecutable(soapUIExecutable)
    }

    public void setSoapUIArgs(String soapUIArgs) {
        this.args = "$soapUIArgs".trim().split(" ") as List
    }
}

// execute SOAPUI
task executeSOAPUI(type: SoapUITask){

    def reportPath = 'path/of/outputReports'

    soapUIArgs = '-f "' + reportPath + '" -j "/path/of/SOAPUI project xml/src/PCDEMO-soapui-project.xml"'

    // perform the xslt
    doLast {
        soapuiXmlToHtml(reportPath)
    }

}

// task to perform the XSLT
def soapuiXmlToHtml(resultsDir) {
    def targetDir = new File(resultsDir, 'html')

    ant.taskdef(
        name: 'junitreport',
        classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator',
        classpath: configurations.antClasspath.asPath
    )

    ant.junitreport(todir: resultsDir) {
        fileset(dir: resultsDir, includes: 'TEST-*.xml')
        report(todir: targetDir, format: "frames")
    }
}

然后您可以调用gradle executeSOAPUI,并在path/of/outputReports/html/文件夹上生成您的JUnit Html报告。

希望它有所帮助,