SOAPUI开源版简单定制报告1

SOAPUI开源版本不提供导出报告功能,不过可以简单定制一番?..

看了两小时官网的文档,发现确实可行,且成本不高,虽然可能没有Pro版本的报告浑然一体不过勉强凑合了。

SoapUI的脚本语言是Groovy,这是啥?没听过,google之,原来如此这般...好吧。

第一步,收集执行的各种情况,生成一个xml报告,方便其他集成和后续改造,搞成一个HTML?

import com.eviware.soapui.SoapUI
//log.info runner.getId()
def sw = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(sw)
//xml//根节点,加个版本号
xml.Report(type:"SoapUI",version:SoapUI.SOAPUI_VERSION ){//定义几个变量用来统计后续的成功总数和失败总数,警告总数
      passedcount=0
    failedcount=0
      warningscount=0//遍历project的结果,得到suite结果
  runner.getResults().each{tsuite ->
      //log.info tsuite.status
      passed=0
      failed=0
      warnings=0//遍历suite结果返回的成功状态,记录成功数,失败数...
    tsuite.getResults().status.each{
           //log.info it
          if(it.toString()=="FINISHED"){
              passed=passed+1
              }
        else if(it.toString()=="FAILED"){
            failed=failed+1
            }
        else if(it.toString()=="WARNING"){
            warnings=warnings+1
            }
          }
      //log.info tsuite.getResults().status//加入一个suite子节点,带上name.status,runtime等等属性
      TestSuite(name:tsuite.testSuite.getName(),status:tsuite.getStatus(),runtime:tsuite.getTimeTaken()/1000,stime:tsuite.getStartTime(),passed:passed,failed:failed){
      tsuite.getResults().each{tcase ->
      passed=0
      failed=0
      warnings=0
    tcase.getResults().status.each{
           //log.info it
          if(it.toString()=="OK"){
              passed=passed+1
              passedcount=passedcount+1
              }
        else if(it.toString()=="FAILED"){
            failed=failed+1
            failedcount=failedcount+1
            }
        else if(it.toString()=="WARNING"){
            warnings=warnings+1
            warningscount=warningscount+1
            }
          }//加入TestCase节点
      TestCase(name:tcase.testCase.getName(),status:tcase.getStatus(),runtime:tcase.getTimeTaken()/1000,stime:tcase.getStartTime(),passed:passed,failed:failed,warnings:warnings){

          tcase.getResults().each{tstep ->

          TestStep(name:tstep.testStep.getName(),status:tstep.getStatus(),runtime:tstep.getTimeTaken()/1000){
              tstep.getMessages().each{message ->
                  Message(message.toString())

                  }
            RequestHeaders(tstep.getRequestHeaders() )

              }
          //log.info tstep.getResults()

              }
      }
          }
      }
    //}
  }
  //总览情况
  Summary(name:project.name,sTime:project.getPropertyValue("stime"), etime:new Date().format(‘yyyy-MM-dd HH:mm:ss‘),status:runner.getStatus(), runtime:runner.getTimeTaken()/1000,passed:passedcount,failed:failedcount,warnings:warningscount)
}
log.info sw//输出到文件
new File("/Users/zhangminjie/SOAPUIReport.xml").write(sw.toString())  

一气呵成,写完。然后发现冲动了,Groovy有几种生成XML的方式,我这是似乎使用了不是那么合适的方法,没关系,稍后修改。

不得不说Groovy处理xml非常很方便。

主要的几页文档:

http://www.soapui.org/apidocs/com/eviware/soapui/model/testsuite/TestStepResult.html

http://www.soapui.org/Scripting-Properties/tips-a-tricks.html

http://www.soapui.org/apidocs/com/eviware/soapui/model/testsuite/TestRunner.html

http://www.soapui.org/apidocs/index.html

时间: 2024-10-14 02:18:01

SOAPUI开源版简单定制报告1的相关文章

SoapUI开源版简单定制报告3

import com.eviware.soapui.SoapUI def getReportToXML(){ def builder = new groovy.xml.StreamingMarkupBuilder() builder.encoding="UTF-8" def Report = { mkp.xmlDeclaration() Report(type:"SoapUI",version:SoapUI.SOAPUI_VERSION ){ passedTotal

SOAPUI开源版简单定制报告2

稍微修改下实现,使用StreamingMarkupBuilder方法. 生成的xml的排版虽然没有了,不过不在意了,反正最终也不是直接读这玩意 import com.eviware.soapui.SoapUI //log.info runner.getId() //def sw = new StringWriter() //def xml = new groovy.xml.MarkupBuilder(sw) def builder = new groovy.xml.StreamingMarkup

【开源夏令营优秀开题报告】专题之二 - 嵌入式与智能硬件类合集

CSDN开源夏令活动已经正式进入第一实习阶段,我们遴选出部分优秀提案开题报告进行展示.本文是嵌入式与智能硬件类开题报告展示. 编者按:CSDN开源夏令活动,已经正式进入第一实习阶段,我们遴选出了部分提案的优秀开题报告进行展示.优秀开题报告作者将得到CSDN高校俱乐部发出的"2014开源夏令营荣誉证书"及纪念品一份. 提案1:环境数据采集系统  提案简介:该项目是一套利用物联网技术对环境数据进行采集.处理的综合系统:其利用传感器网络,收集环境中的温度.湿度.光照度.风速.紫外线强度.粉尘

安卓ROM简单定制、打包、签名、换字体

首先下载一个ROM主要是ZIP格式的. 一.下载一个ZIP格式的ROM解压,一个ROM的结构其实以CM7官方为例,很简单如下 01.META-INF 02.system 03.boot.img复制代码 当然有的也包含有DATA文件夹,那么这些是干嘛的呢!META-INF\com\google\android\updater-script放的是刷机脚本,刷进机器就靠这些脚本,一般不用动就行. system里面放的是系统文件夹 01.system\app system\bin 02.system\e

FineUI(开源版)v6.0中FState服务器端验证的实现原理

前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的发展:http://fineui.com/donate/ FineUI的FState与ViewState 早在2013-01 我曾写过一篇文章,对FState有详细介绍:http://www.cnblogs.com/sanshi/archive/2013/01/08/2850459.html 现在来

FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!

开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位. FineUI(开源版)v4.2.2 是 8 年来的第 125 个版本,对表单.表格进行底层结构的重要调整,使其更简单更易于扩展,同时官网示例数也突破 300 个! v4.2.2主要更新内容: 1. 单元格编辑底层传输数据优化(但是不影响上层函数:GetModifiedDict.GetNewAddedList.GetDeletedList) 新版将新

【开源夏令营优秀开题报告】专题之三-云与大数据合集

CSDN开源夏令活动已经正式进入第一实习阶段,我们遴选出部分优秀提案开题报告进行展示.本文是云计算与大数据类开题报告展示. 编者按:CSDN开源夏令活动,已经正式进入第一实习阶段,我们遴选出了部分提案的优秀开题报告进行展示.优秀开题报告作者将得到CSDN高校俱乐部发出的"2014开源夏令营荣誉证书"及纪念品一份. 提案1:数据可视化实践 提案简介:基于百度数据可视化组件(ECharts.ZRender)做数据可视化相关专题应用:内容主题不限,但建议贴近民生大众,如"环境&qu

部署eolinker开源版接口管理

想找一个API接口管理的软件,为了安全性和扩展性考虑,希望是开源的,而且可以在内网独立部署.网上翻找了资料,经过一份比对之后,最终采用eolinker.过去有使用过RAP,但是感觉界面实在是太丑了. 我使用的是eolinker的免费开源版(3.0的版本),官网还提供在线版,在线版的功能更加强大,但是一般来说,开源版就已经够用了,看团队的需求. eolinker官网地址:https://www.eolinker.com/#/ github上源码:https://github.com/eolinke

eoLinker-AMS开源版JAVA版本正式发布

eoLinker-AMS开源版JAVA版本正式发布! 深感广大开发者的支持与厚爱,我们一直在努力为大家提供更多更好的接口服务.截止至2018年4月3日,eoLinker-AMS 开源版for PHP已经更新到了3.5.0,平均每周更新一个新版本--出色的优化迭代速度,上佳的功能支持,周到的用户支持服务,一切只为成就万物互联! eoLinker尊重每一种语言的使用者,也深知用户需求的多样性.为此,我们在发布eoLinker-AMS JAVA版的同时,正式启动多语言AMS开源计划!下一步,我们将会制