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())  
  • 相关阅读:
    mysql 全量备份和增量备份
    mysql 修改密码提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    MHA 常见问题解决
    MHA 数据库高可用+ GTID 同步测试部署
    通过电脑抓手机端log
    用js递归遍历树结构
    js实现全屏
    使表格随着内容自适应宽度
    POST请求
    vue中组件通信
  • 原文地址:https://www.cnblogs.com/zhangminjie/p/4215640.html
Copyright © 2011-2022 走看看