1:准备html模版

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>接口自动化</title>
</head>
<body style="margin-top: 20px; font-style: '微软雅黑';"> <table border="1" cellspacing="0" cellpadding="5" width="100%" align="center">
<tr bgcolor="bisque" style="font-style: 30px"> <td height="60" colspan="5">
自动化测试报告:&test_data </td>
</tr>
<tr style="font-style: 20px">
<td width="20%">被测版本:&version</td>
<td width="15%">成功:&pass</td>
<td width="15%">失败:&fail</td>
<td width="15%">错误:&error</td>
<td width="30%">最后时间:&lasttime</td>
</tr>
</table>
<p></p> <table border="1" cellspacing="0" cellpadding="5" width="100%" align="center">
<tr height="40" bgcolor="darkseagreen">
<td width="7%">记录编号:</td>
<td width="10%">记录编号:</td>
<td width="9%">记录编号:</td>
<td width="7%">记录编号:</td>
<td width="20%">记录编号:</td>
<td width="7%">记录编号:</td>
<td width="15%">记录编号:</td>
<td width="15%">记录编号:</td>
<td width="10%">记录编号:</td>
<td width="10%">记录编号:</td>
</tr>
&test_result </table>
</body>
</html>

打开模版,数据替换

'''
Created on Aug 8, 2019 @author: liliang
'''
import os
import time
from ctypes.test.test_pickling import name
class MyClass():
'''
classdocs
'''
def __init__(self):
pass
def open_file(self):
tempfile=os.path.abspath("..")+"/demo/2.html"
tem=open(tempfile, mode='r', encoding='utf-8').read()
return tem
def write_file(self,file,test_data,version,passnum,faillnum,errornum,lasttime,all_data):
file=file.replace("&test_data",test_data)
file=file.replace("&version",version)
file=file.replace('&pass',passnum)
file=file.replace('&fail',faillnum)
file=file.replace('&error',errornum)
file=file.replace('&lasttime',lasttime)
content=''
for i in range(0,len(all_data)):
if all_data[i]["name"] =="粉丝":
content+="<tr height=40 bgcolor='red'>"
content+="<td width='7%%' >%s</d>" %str(all_data[i]["name"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["age"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["school"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["work"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["address"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex1"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["school2"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["work3"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["address4"])
content+="</tr>"
else: content+="<tr height=40 bgcolor='bisque'>"
content+="<td width='7%%' >%s</d>" %str(all_data[i]["name"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["age"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["school"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["work"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["address"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex1"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["school2"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["work3"])
content+="<td width='7%%'>%s</d>" %str(all_data[i]["address4"])
content+="</tr>" # for result in all_data:
# content+="<tr height=40>"
# content+="<td width='7%%'>%s</d>" %str(result[0])
# content+="<td width='7%%'>%s</d>" %str(result[1])
# content+="<td width='7%%'>%s</d>" %str(result[2])
# content+="<td width='7%%'>%s</d>" %result[3]
# content+="<td width='7%%'>%s</d>" %result[4]
# content+="<td width='7%%'>%s</d>" %result[5]
# content+="<td width='7%%'>%s</d>" %result[6]
# content+="<td width='7%%'>%s</d>" %result[7]
# content+="<td width='7%%'>%s</d>" %result[8]
# content+="<td width='7%%'>%s</d>" %result[9]
# content+="</tr>"
file=file.replace('&test_result',content)
file_folder=os.path.abspath("..")+"/demo/"
file_name=file_folder+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+".html"
report_file=open(file_name, mode="w+", encoding='utf-8')
report_file.write(file)
report_file.close()
def get_datetime(self):
now_time=time.strftime("%Y_%M_%d_%H:%M:%S",time.localtime())
return now_time
if __name__ == '__main__':
my=MyClass()
file=my.open_file()
all_data=[
{"name":"Tom","age":23,"sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学2","work3":"学生","address4":"上海"},
{"name":"数据","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小3学","work3":"学生","address4":"上海"},
{"name":"粉丝","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学4","work3":"学生","address4":"上海"},
{"name":"阿道夫","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小fs学","work3":"学生","address4":"上海"},
{"name":"二娃","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fa","work3":"学生","address4":"上海"},
{"name":"我确认","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学","work3":"学生","address4":"上海"},
{"name":"特务","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fa","work3":"学生","address4":"上海"},
{"name":"突然","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学ddd","work3":"学生","address4":"上海"},
{"name":"圈儿","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小asss学","work3":"学生","address4":"上海"},
{"name":"让他","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fdsaa","work3":"学生","address4":"上海"},
]
my.write_file(file, "2019_07_08_03:07:59", "1.3.0", "90", "7", "key error", "2019_07_08_03:07:59", all_data)
 生成报告

工程目录

python生成接口自动化测试报告模版的更多相关文章

  1. pytest+allure生成接口自动化测试报告

    准备环境 1.安装pytest pip install pytest -i http://pypi.douban.com/simple pytest-ordering pytest.main([ &q ...

  2. jmeter生成html格式接口自动化测试报告

    jmeter生成html格式接口自动化测试报告 jmeter自带执行结果查看的插件,但是需要在jmeter工具中才能查看,如果要向领导提交测试结果,不够方便直观. 笔者刚做了这方面的尝试,总结出来分享 ...

  3. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...

  4. unittest接口自动化测试报告

    unittest接口自动化测试报告 展示: 代码: __author__ = "Wai Yip Tung, Findyou" __version__ = "0.8.2.1 ...

  5. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  6. Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...

  7. Python+Selenium框架 ---自动化测试报告的生成

    本文来介绍如何生成自动化测试报告,前面文章尾部提到了利用HTMLTestRunner.py来生成自动化测试报告.关于HTMLTestRunner不过多介绍,只需要知道是一个能生成一个HTML格式的网页 ...

  8. python+requests接口自动化完整项目设计源码

    前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于本公司内部的业务. 所以用例的代码还是得自己去一个个写,我只能分享项目 ...

  9. python+requests接口自动化完整项目设计源码(一)

    原文地址https://www.cnblogs.com/yoyoketang/tag/python接口自动化/ 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址 ...

随机推荐

  1. Linux——管道与重定向

    参考资料: 极客学院IBMdeveloperWorks 重定向标准I/O Linux shell(比如Bash)接收或发送序列和字符串流形式的输入或输出.每个字符都独立于与之相邻的字符.字符没有被组织 ...

  2. Google File System 论文阅读笔记

    核心目标:Google File System是一个面向密集应用的,可伸缩的大规模分布式文件系统.GFS运行在廉价的设备上,提供给了灾难冗余的能力,为大量客户机提供了高性能的服务. 1.一系列前提 G ...

  3. Expected one result (or null) to be returned by selectOne() 数据库结果集和java实例

    mybatis会根据查询的结果集初始化java实例. 如果是复杂类型,我们一般都会在mapper中做好映射. 1.所以如果查询到的是多个结果,那么对应的java类型也必须的集合类型.(result 为 ...

  4. MySQL-第N篇杂记

    1.数据的导入导出 2.查询结果的重定向 3.ON DUPLICATE KEY UPDATE对于指定的主键或者唯一键,insert时发生冲突则进行update操作. 4.解决MySQL中问乱码问题,分 ...

  5. Emmet-前端开发神器

    地址:https://segmentfault.com/a/1190000007812543 Emmet是一款编辑器插件,支持多种编辑器支持.在前端开发中,Emmet 使用缩写语法快速编写 HTML. ...

  6. 5、numpy——切片和索引

    1.一维数组 1.1 一维数组很简单,基本和列表一致.ndarray 数组可以基于 0 - n 的下标进行索引. 切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step ...

  7. P3515 [POI2011]Lightning Conductor(决策单调性分治)

    P3515 [POI2011]Lightning Conductor 式子可转化为:$p>=a_j-a_i+sqrt(i-j) (j<i)$ $j>i$的情况,把上式翻转即可得到 下 ...

  8. DOM IE 兼容性 I

    IE8事件模型和DOM事件模型有何不同?如何处理DOM事件模型与IE8事件模型的兼容性? 1 事件模型不一样 DOM的浏览器兼容性问题:事件模型   3个阶段            01 外向内:捕获 ...

  9. 在vCenter上创建新用户 (适用版本6.0)

  10. bzoj5210 最大连通子块和 动态 DP + 堆

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5210 题解 令 \(dp[x][0]\) 表示以 \(x\) 为根的子树中的包含 \(x\) ...