# encoding: utf-8 """ @author: lileilei @file: py_Html.py @time: 2017/6/5 17:04 """ titles = '接口测试' def title(titles): title = '''<!DOCTYPE html> <html> <head> <title>%s</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 Shim 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 --> <!-- 注意: 如果通过 file:// 引入 Respond.js 文件,则该文件无法起效果 --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <style type="text/css"> .hidden-detail,.hidden-tr{ display:none; } </style> </head> <body> ''' % (titles) return title connent = ''' <div class='col-md-4 col-md-offset-4' style='margin-left:3%;'> <h1>接口测试的结果</h1>''' def shouye(starttime, endtime, passge, fail, excepthions, weizhicuowu): beijing = ''' <table class="table table-hover table-condensed"> <tbody> <tr> <td><strong>开始时间:</strong> %s</td> </tr> <td><strong>结束时间:</strong> %s</td></tr> <td><strong>耗时:</strong> %s</td></tr> <td><strong>结果:</strong> <span >Pass: <strong >%s</strong> Fail: <strong >%s</strong> exception: <strong >%s</strong> weizhicuowu : <strong >%s</strong></span></td> </tr> </tbody></table> </div> ''' % (starttime, endtime, (endtime - starttime), passge, fail, excepthions, weizhicuowu) return beijing shanghai = '''<div class="row " style="margin:60px"> <div style=' margin-top: 18%;' > <div class="btn-group" role="group" aria-label="..."> <button type="button" id="check-all" class="btn btn-primary">所有用例</button> <button type="button" id="check-success" class="btn btn-success">成功用例</button> <button type="button" id="check-danger" class="btn btn-danger">失败用例</button> <button type="button" id="check-warning" class="btn btn-warning">错误用例</button> <button type="button" id="check-except" class="btn btn-defult">异常用例</button> </div> <div class="btn-group" role="group" aria-label="..."> </div> <table class="table table-hover table-condensed table-bordered" style="word-wrap:break-word; word-break:break-all; margin-top: 7px;"> <tr > <td ><strong>用例ID </strong></td> <td><strong>用例名字</strong></td> <td><strong>key</strong></td> <td><strong>请求内容</strong></td> <td><strong>url</strong></td> <td><strong>请求方式</strong></td> <td><strong>预期</strong></td> <td><strong>实际返回</strong></td> <td><strong>结果</strong></td> </tr> ''' def passfail(tend): if tend == 'pass': htl = '''<td bgcolor="green">pass</td>''' elif tend == 'fail': htl = '''<td bgcolor="fail">fail</td>''' elif tend == 'weizhi': htl = '''<td bgcolor="red">error</td>''' else: htl = '<td bgcolor="crimson">exect</td>' return htl def ceshixiangqing(reslt, id, name, key, coneent, url, meth, yuqi, json, relust): xiangqing = ''' <tr class="case-tr %s"> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> %s </tr> ''' % (reslt, id, name, key, coneent, url, meth, yuqi, json, passfail(relust)) return xiangqing weibu = '''</div></div></table><script src="https://code.jquery.com/jquery.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> <script type="text/javascript"> $("#check-danger").click(function(e){ $(".case-tr").removeClass("hidden-tr"); $(".success").addClass("hidden-tr"); $(".warning").addClass("hidden-tr"); $(".error").addClass("hidden-tr"); }); $("#check-warning").click(function(e){ $(".case-tr").removeClass("hidden-tr"); $(".success").addClass("hidden-tr"); $(".danger").addClass("hidden-tr"); $(".error").addClass("hidden-tr"); }); $("#check-success").click(function(e){ $(".case-tr").removeClass("hidden-tr"); $(".warning").addClass("hidden-tr"); $(".danger").addClass("hidden-tr"); $(".error").addClass("hidden-tr"); }); $("#check-except").click(function(e){ $(".case-tr").removeClass("hidden-tr"); $(".warning").addClass("hidden-tr"); $(".danger").addClass("hidden-tr"); $(".success").addClass("hidden-tr"); }); $("#check-all").click(function(e){ $(".case-tr").removeClass("hidden-tr"); }); </script> </body></html>''' def relust(titles, starttime, endtime, passge, fail, id, name, key, coneent, url, meth, yuqi, json, relust, exceptions, weizhi): if type(name) == list: relus = ' ' for i in range(len(name)): if relust[i] == "pass": clazz = "success" elif relust[i] == "fail": clazz = "warning" elif relust[i] == "weizhi": clazz = "danger" else: clazz = 'error' relus += ( ceshixiangqing(clazz, id[i], name[i], key[i], coneent[i], url[i], meth[i], yuqi[i], json[i], relust[i])) text = title(titles) + connent + shouye(starttime, endtime, passge, fail, exceptions, weizhi) + shanghai + relus + weibu else: text = title(titles) + connent + shouye(starttime, endtime, passge, fail, exceptions, weizhi) + shanghai + ceshixiangqing(id, name, key, coneent, url, meth, yuqi, json, relust) + weibu return text def createHtml(filepath, titles, starttime, endtime, passge, fail, id, name, key, coneent, url, meth, yuqi, json, relusts, exceptions, weizhi): texts = relust(titles, starttime, endtime, passge, fail, id, name, key, coneent, url, meth, yuqi, json, relusts, exceptions, weizhi) with open(filepath, 'wb') as f: f.write(texts.encode('utf-8'))