import os
import time
from conf.settings import REPORT_PATH
class HtmlReport(object):
__style_html = ‘‘‘
‘‘‘
__report_html = ‘‘‘
{style}
接口测试报告
测试概况
用例总数 | 通过数量 | 失败数量 | 运行时间 |
---|
{all} | {ok} | {fail} | {run_time} s |
接口详细
所属项目 | 模块 | 用例描述 | URL | 测试人员 | 用例状态 | |
{case_res}
‘‘‘
__case_html = ‘‘‘
{project} | {model} | {detail} | {url} | {tester} | {status} | 查看接口详细 |
请求/返回 "{project}" 请求报文 | 返回报文 |
---|
{request} | {response} |
|
‘‘‘
def __init__(self,report_dic):
‘‘‘
:param report_dic:生成报告需要用的字典
{
"all": 5,#运行用例数量
"ok": 4,#通过数量
"fail": test1,#失败数量
"run_time": 100,#运行时间,单位s
"case_res": [{}],#每条用例的执行结果,
case_res:
{
"case_id":"001",#用例id
"project":"易品",#所属项目
"model":"登录",#模块
"detail":"正常登录",#用例标题
"url":"http://10.165.124.28:8080/q", #请求url
"tester":"牛牛", #测试人员
"status":"通过",#测试结果
"request":"a=test1&b=2",#请求报文
"response":"{‘code‘:200,‘msg‘:‘操作成功‘}"#返回报文
}
}
‘‘‘
self.report_dic = report_dic
def report(self):
res_list_html = ‘‘
res_list = self.report_dic.get(‘case_res‘)
for res in res_list:
res_list_html+=self.__case_html.format(**res)
self.report_dic[‘case_res‘]=res_list_html
self.report_dic[‘style‘] = self.__style_html
self.report_dic[‘date‘] = time.strftime(‘%Y/%m/%d %H:%M:%S‘)
self.__write_file()
return self.file_name
def __write_file(self):
self.file_name = os.path.join(REPORT_PATH,‘{date}_TestReport.html‘.format(date=time.strftime(‘%Y%m%d%H%M%S‘)))
with open(self.file_name,‘w‘,encoding=‘utf-8‘) as fw:
fw.write(self.__report_html.format(**self.report_dic))
if __name__ == ‘__main__‘:
res_list = [
{
"case_id":"1",
"project":"易品",
"model":"登录",
"detail":"正常登录",
"url":"http://10.165.124.28:8080/q",
"tester":"牛牛",
"status":"通过",
"request":"a=1&b=2",
"response":"{‘code‘:200,‘msg‘:‘操作成功‘}"
},
{
"case_id":"2",
"project":"易品",
"model":"登录",
"detail":"正常登录",
"url":"http://10.165.124.28:8080/q11111",
"tester":"牛牛111",
"status":"通过",
"request":"a=1&b=2",
"response":"{‘code‘:200,‘msg‘:‘操作成功‘}"
},
]
all = {
"all":2, # 总共多少条用例
"ok":1, # 通过的
"fail":1, # 失败
"run_time":100, # 运行了多久
"case_res":res_list,
"date": time.strftime(‘%Y/%m/%d %H:%M:%S‘) # 什么时候执行的
}
a = HtmlReport(all)
a.report()