我有一个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'
}
答案 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报告。
希望它有所帮助,