网页报告
Django的方法我就不多说了,博客中已经有一整个系列文章了。我们需要在views文件中打开之前记录的3个txt文件,然后做一些数据处理,返回给前端,前端用Bootstrap来渲染,就能生成一个比较漂亮的测试报告。
def index(request): rightside = [] result = [] rst_data = [] leftside = [] passed = 0 fail = 0 noresult = 0 with open(os.getcwd() + '/PortTest/leftside.txt') as ls: for x in ls.readlines(): lf_data = { 'code': x.strip().split('-')[0], 'title': x.strip().split('-')[1] } leftside.append(lf_data) with open(os.getcwd() + '/PortTest/rightside.txt') as rs: for x in rs.readlines(): row = x.strip().split('|') rs_data = { "fssj": row[0], "csbt": row[1], "fsfs": row[2], "alms": row[3], "fsdz": row[4], "fscs": row[5], 'testid': row[6] } rightside.append(rs_data) with open(os.getcwd() + '/PortTest/result.txt') as rst: for x in rst.readlines(): row = x.strip().split('|') if row[len(row)-1] == 'fail': fail += 1 elif row[len(row)-1] == 'pass': passed += 1 elif row[len(row)-1] == 'no except result': noresult += 1 rs_data = [] for y in row: rs_data.append(y) result.append(rs_data) for a, b in zip(rightside, result): data = { "sendData": a, "dealData": b, "result": b[len(b)-1] } rst_data.append(data) return render(request, 'PortTest/index.html', {"leftside": leftside, "rst_data": rst_data, "pass": passed, "fail": fail, "noresult": noresult}) |
基本上都是一些很基础的知识,字符串分割等等。这里的数据处理为了方便,在获取数据存储的时候就要按照一定的格式来存储,views的方法就很容易做处理。
前端代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link href="http://jb51.net/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> <script src="http://fuck.thinksaas.cn/get/http://jb51.net/jquery/2.0.0/jquery.min.js"></script> <script src="http://fuck.thinksaas.cn/get/http://jb51.net/bootstrap/3.0.3/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="page-header"> <h1>接口测试报告 <small>Design By Sven</small> </h1> </div> </div> <div class="row"> <div class="col-md-4"> <h3>测试通过 <span class="label label-success">{{ pass }}</span></h3> </div> <div class="col-md-4"> <h3>测试失败 <span class="label label-danger">{{ fail }}</span></h3> </div> <div class="col-md-4"> <h3>无结果 <span class="label label-warning">{{ noresult }}</span></h3> </div> </div> <p></p> <div class="row"> <div class="col-md-3"> <ul class="list-group"> {% for ls in leftside %} <li class="list-group-item"><a href="#{{ ls.code }}">{{ ls.code }} - {{ ls.title }}</a></li> {% endfor %} </ul> </div> <div class="col-md-9"> {{ x.result }} {% for x in rst_data %} <div class="panel-group" id="accordion"> {% if x.result == 'pass' %} <div class="panel panel-success"> {% elif x.result == 'fail' %} <div class="panel panel-danger"> {% elif x.result == 'no except result' %} <div class="panel panel-warning"> {% endif %} <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" href="#{{ x.sendData.testid }}"> {{ x.sendData.testid }} - {{ x.sendData.csbt }} </a> </h4> </div> <div id="{{ x.sendData.testid }}" class="panel-collapse collapse"> <div class="panel-body"> <b>{{ x.sendData.fssj }}</b><br> {{ x.sendData.csbt }}<br> {{ x.sendData.fsfs }}<br> {{ x.sendData.alms }}<br> {{ x.sendData.fsdz }}<br> {{ x.sendData.fscs }} <hr> {% for v in x.dealData %} {{ v }}<br> {% endfor %} </div> </div> </div> </div> <p></p> {% endfor %} </div> </div> </div> <script> $(function () { $(window).scroll(function () { if ($(this).scrollTop() != 0) { $("#toTop").fadeIn(); } else { $("#toTop").fadeOut(); } }); $("body").append("<div id="toTop" style="border:1px solid #444;background:#333;color:#fff;text-align:center;padding:10px 13px 7px 13px;position:fixed;bottom:10px;right:10px;cursor:pointer;display:none;font-family:verdana;font-size:22px;">^</div>"); $("#toTop").click(function () { $("body,html").animate({scrollTop: 0}, 800); }); }); </script> </body> </html> |
测试报告效果图
最后
用Python写一个工具很容易,主要还是要能更方便地满足实际工作中的使用需要为目的。如果要做完整的接口测试,还是尽量使用已经成熟的工具。