参考代码github地址:https://github.com/zhangfei19841004/ztest
以下是之前写的自动化测试报告模板,所有的东西都是用excel来完成,作为一个秘籍恐惧症患者真的很恐惧 ,再次感谢https://github.com/zhangfei19841004/ztest 同学,可以用html的方式去呈现自动化报告,源码中的格式与自己写的报告格式不同,之前又学过一些html,jQuery的知识,这次正好用的上,嘻嘻!
简述一下逻辑,将csv文件中的数据读取出来,然后用重跑的用例针对之前的报错的进行更改,然后在将数据写到html文件中,然后就是一份自定义的自动化测试报告了。
执行开始时间 | 2019/1/13 18:57 | 执行结束时间 | 2018/10/20 19:09 | ||
耗时(秒) | 0时12分31秒 | ||||
用例总数 | 8 | ||||
用例初始通过数 | 4 | 用例初始通过率 | 50.00% | ||
用例初始失败数 | 4 | 用例初始失败率 | 50.00% | ||
用例重跑后通过数 | 6 | 用例重跑通过率 | 75.00% | ||
用例重跑后失败数 | 2 | 用例重跑失败率 | 25.00% | ||
用例详细报告 | |||||
SNG-001 | 写信 | 发送邮件1 | send_mail1 | TRUE | succeed |
SNG-002 | 草稿箱 | 发送邮件2 | send_mail2 | TRUE | succeed |
SNG-003 | 订阅邮件 | 发送邮件3 | send_mail3 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
SNG-004 | 写信 | 发送邮件4 | send_mail4 | TRUE | succeed |
SNG-005 | 草稿箱 | 发送邮件5 | send_mail5 | TRUE | succeed |
SNG-006 | 写信 | 发送邮件6 | send_mail6 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
SNG-007 | 草稿箱 | 发送邮件7 | send_mail7 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
SNG-008 | 草稿箱 | 发送邮件8 | send_mail8 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
重跑的用例 | |||||
SNG-003 | 写信 | 发送邮件3 | send_mail3 | TRUE | succeed |
SNG-006 | 草稿箱 | 发送邮件6 | send_mail6 | TRUE | succeed |
SNG-007 | 草稿箱 | 发送邮件7 | send_mail7 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
SNG-008 | 订阅邮件 | 发送邮件8 | send_mail8 | FALSE | selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"blog_nav_newpostxx"} |
1、修改html部分,添加了多个要素,以及详细数据的“耗时”
测试报告
其中将原有的单列要素,修改为多列要素
.form-horizontal .form-group{
width: 40%;
float: left;
}
.statistical{
width: 40%;
}
.col-sm-5{
width: 60%;
}
.highly{
height: 35px;
}
.text-danger,.text-warning{
color: #1ab394;
}
.text-error{
color: #EF5352;
}
其中添加了多个数据的显示,将原有的报错信息数组类型,修改为字符串形式
其中都是写死的,简直不忍直视,很尴尬
#coding=utf-8
'''
Created on 2019年1月13日
@author: pinsengjiujiezhong
'''
with open('customerStatistical.csv','r') as fo:
lines = fo.readlines()
ReportList = []
for line in lines:
list = line.strip().split(',')
ReportList.append(list)
startTime = ReportList[0][1]
endTime = ReportList[0][3]
executionTime = ReportList[1][1]
listSum = ReportList[2][1]
passSum = ReportList[3][1]
Pass = ReportList[3][3]
fillSum = ReportList[4][1]
Fill = ReportList[4][3]
passAllSum = ReportList[5][1]
startPass = ReportList[5][3]
startFillSum = ReportList[6][1]
startFill = ReportList[6][3]
startResult = []
endResult = []
IntegrationReport = []
for list in ReportList:
if list[0] == u'用例详细报告':
startIndex = ReportList.index(list)
elif list[0] == u'重跑的用例':
endIndex = ReportList.index(list)
for Report in ReportList[startIndex+1:endIndex-1]:
Result = {'className' : Report[1],
'methodName' : Report[2],
'description' : Report[3],
'status' : Report[4],
'log' : Report[5],}
startResult.append(Result)
for Report in ReportList[endIndex+1:-1]:
Result = {'className' : Report[1],
'methodName' : Report[2],
'description' : Report[3],
'status' : Report[4],
'log' : Report[5],}
endResult.append(Result)
for start in startResult:
for end in endResult:
if start['description'] == end['description']:
start = end
break
IntegrationReport.append(start)
Result = {'startTime' : startTime,
'endTime' : endTime,
'executionTime' : executionTime,
'listSum' : listSum,
'passSum' : passSum,
'Pass' : Pass,
'fillSum' : fillSum,
'Fill' : Fill,
'passAllSum' : passAllSum,
'startPass' : startPass,
'startFillSum' : startFillSum,
'startFill' : startFill,
'startResult' : startResult,
'endResult' : endResult,
'IntegrationReport' : IntegrationReport}
import json
Result = json.dumps(Result)
with open('template','rb') as fo:
lines = fo.read()
fo.close()
lines = lines.replace(b'Edit_resultData',Result.encode('utf-8'))
with open('test.html','wb') as fo:
fo.write(lines)
fo.close()
在学了1个月vue后,强行将js所用的jQuery编写的部分改成了vue来渲染页面,真的是强行变更的,很勉强,其中需要替换2个数据resultDict、items