zoukankan      html  css  js  c++  java
  • 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=0
        failedTotal=0
          warningsTotal=0
          testcaseTotal=0
          
          runner.getResults().each{tsuite ->
          passed=0
          failed=0
          warnings=0
        tsuite.getResults().status.each{
              if(it.toString()=="FINISHED"){
                  passed=passed+1
                  }
            else if(it.toString()=="FAILED"){
                failed=failed+1
                }
            else if(it.toString()=="WARNING"){
                warnings=warnings+1
                }
              }
              
            testcaseTotal=testcaseTotal+tsuite.getResults().size()
            //log.info tsuite.getResults().size()
          TestSuite(name:tsuite.testSuite.getName(),total:tsuite.getResults().size(),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{
              if(it.toString()=="OK"){
                  passed=passed+1
                  passedTotal=passedTotal+1
                  }
            else if(it.toString()=="FAILED"){
                failed=failed+1
                failedTotal=failedTotal+1
                }
            else if(it.toString()=="WARNING"){
                warnings=warnings+1
                warningsTotal=warningsTotal+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()}]]>"
                    }        
                  }
              }
          }
    }
      }
     }
      
      Summary(name:project.name,total:testcaseTotal,stime:project.getPropertyValue("stime"),etime:new Date().format('yyyy-MM-dd HH:mm:ss'),status:runner.getStatus(), runtime:runner.getTimeTaken()/1000,passed:passedTotal,failed:failedTotal,warnings:warningsTotal)
    }
    }
    
    //def writer = new FileWriter("${getReportPath()}${new Date().format('yyMMddHHmmss')}.xml")
    builder.bind(Report)
    //writer << xml
    
    }
    def getReportPath(filename){
        matcher = project.path.toString() =~ /.*//
        File f = new File("${matcher[0]}report/${project.name}/")
        f.mkdirs()
        new File("${matcher[0]}report/${project.name}/${filename}")
        }
    def getXML=getReportToXML()
    //log.info getXML
    def reportXML = new XmlParser().parseText(getXML.toString())
    //log.info reportXML["Summary"][0].attribute("name")
    def sw =new StringWriter()
    def html =new groovy.xml.MarkupBuilder(sw)
    def htmlStyle='''
    table.gridtable {
                font-family: verdana,arial,sans-serif;
                font-size:11px;
                color:#333333;
                border- 1px;
                border-color: #666666;
                border-collapse: collapse;
            }
            table.gridtable th {
                border- 1px;
                padding: 8px;
                border-style: solid;
                border-color: #666666;
                background-color: #dedede;
            }
            table.gridtable td {
                border- 1px;
                padding: 8px;
                border-style: solid;
                border-color: #666666;
                background-color: #ffffff;
            }
            p.request{
                color: red;
                font-size: medium;
            }
    
    '''
    html.html{
        head{
        meta("http-equiv":"Content-Type",content:"text/html;charset=utf-8")
        title("Report-${project.name}")
        style(type:"text/css",htmlStyle)
        }
        body{
           
            div("style":" 80%;margin-left: auto;margin-right: auto;",align:"center"){
                h1(align:"center","${project.name} 执行报告")
                h3(align:"left","总览")
                table(align:"center","class":"gridtable","100%"){
                    tr(){
                        th("开始时间")
                        th("结束时间")
                        th("耗时(s)")
                        th("结果")
                        th("总数")
                        th("成功数")
                        th("失败数")
                        //th("警告")
                        }
                    tr(){
                        td(reportXML["Summary"][0].attribute("stime"))
                        td(reportXML["Summary"][0].attribute("etime"))
                        td(reportXML["Summary"][0].attribute("runtime"))
                        td(reportXML["Summary"][0].attribute("status"))
                        td(reportXML["Summary"][0].attribute("total"))
                        td(reportXML["Summary"][0].attribute("passed"))
                        td(reportXML["Summary"][0].attribute("failed"))
                        //td(reportXML["Summary"][0].attribute("warnings"))
                        
                        }
                    
                    }
                h3(align:"left","测试集")
                table(align:"center","class":"gridtable","100%"){
                    tr(){
                        th("名称")
                        th("耗时(s)")
                        th("结果")
                        th("总数")
                        th("成功数")
                        th("失败数")
                        
                        }
                    reportXML.TestSuite.each{tsuite ->
                        tr(){
                            //log.info tsuite
                            td(tsuite.attribute("name"))
                            td(tsuite.attribute("runtime"))
                            
                            td(tsuite.attribute("status"))
                            td(tsuite.attribute("total"))
                            td(tsuite.attribute("passed"))
                            td(tsuite.attribute("failed"))
                            }
                        
                        }
                }
                reportXML.TestSuite.each{tsuite ->
                
                h4(align:"left",tsuite.attribute("name"))
                table(align:"center","class":"gridtable","100%"){
                    tr(){
                        th("名称")
                        
                        th("耗时(s)")
                        th("结果")
                        
                        
                        }
                    tsuite.TestCase.each{tcase->
                    tr(){
                        td(tcase.attribute("name"))
                        td(tcase.attribute("runtime"))
                        td(tcase.attribute("status"))
                        }
                    if(tcase.attribute("status").toString()=="FAILED"){
                    tr(){
                         td(colspan:"3"){
                             tcase.TestStep.each{tstep->
                             if(tstep.attribute("status")=="FAILED"){
                             p("class":"request","名称:${tstep.attribute("name")}       耗时:${tstep.attribute("runtime")}")
                             tstep.Message.each{message->
                             p(message.text())
                                 }
                             }
                             }
                             }
                        }
                    }
                    }
                    
                    }
                    p(align:"right"){a(href:"javascript:scroll(0,0)","返回顶部")}
                
                }
                }
            }
    }
    def reportTime=new Date().format('yyMMddHHmmss')
    getReportPath("${reportTime}.html").write(sw.toString())
    def writer=new FileWriter(getReportPath("${reportTime}.xml"))
    //log.info sw.toString()
    writer.write(getXML)
  • 相关阅读:
    复利计算-做汉堡,结对2.0
    复利计算-结对
    《构建之法》第四章读后感
    复利计算单元测试
    实验一 命令解释程序的编写
    《构建之法》前三章章读后感
    1.0 2.0 3.0复利计算器
    实验0:了解和熟悉操作系统
    学习进度条
    0302思考并回答一些问题
  • 原文地址:https://www.cnblogs.com/zhangminjie/p/4216038.html
Copyright © 2011-2022 走看看