zoukankan      html  css  js  c++  java
  • 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.StreamingMarkupBuilder()
    builder.encoding="UTF-8"
    def Report = {
    //xml
        mkp.xmlDeclaration()
        Report(type:"SoapUI",version:SoapUI.SOAPUI_VERSION ){
          passedcount=0
        failedcount=0
          warningscount=0
          runner.getResults().each{tsuite ->
          //log.info tsuite.status
          passed=0
          failed=0
          warnings=0
        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
          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(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(){
                          mkp.yieldUnescaped "<![CDATA[${message.toString()}]]>"
                          }
                      }
                RequestHeaders(){
                    //
                    mkp.yieldUnescaped "<![CDATA[${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
    
    def writer = new FileWriter("/Users/zhangminjie/${project.name}-${new Date().format('yyMMddHHmmss')}.xml")
    writer << builder.bind(Report)
    //new File("/Users/zhangminjie/SOAPUIReport.xml").write(sw.toString())  
  • 相关阅读:
    VSCode远程编写Shell并实时调试配置过程
    eclispe 无法启动调试 cannot connect to VM
    工作流之设置表访问权限
    利用工作流返回达到无限次重复办理业务的过程
    eworkflow工作流系统在iis中发布
    ie8用ajax访问不能每次都刷新的问题
    视频演示(动态指定执行人+指定申请人的上级)
    视频演示eworkflow集成定制aspx页面的过程
    利用开发框架中的标签库集成报表工具
    流程设计器之标签工具
  • 原文地址:https://www.cnblogs.com/zhangminjie/p/4215640.html
Copyright © 2011-2022 走看看