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. JS 创建动态表格练习

    创建动态表格 1.1 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  2. Linux下复杂PC问题——多进程编程/信号量通信/共享存储区

    进程相关函数 pid_t fork(); 头文件:unistd.h,sys/types.h 作用:建立一个新进程(子进程),子进程与原进程(父进程)共享代码段,并拥有父进程的其他资源(数据.堆栈等)的 ...

  3. 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name

    HTTP Status 500 - Servlet.init() for servlet mybatis threw exception type Exception report message S ...

  4. mysql 分区与性能

    数据库应用分为两类: OLTP(在线事务处理):如bolg.电子商务.网络游戏等 OLAP(在线分析处理):如数据仓库.数据集市 对于OLAP,分区可以很好的提高查询性能,应用大多数据需要频繁地扫描一 ...

  5. Codeforces 1082G(最大权闭合子图)

    题面 传送门 分析 没想到压轴题是道模板裸题 由于子图的权值=边权和-点权和 将边和点都看成新图中的点 S向原来的边i连边,权值为边权 点i向T连边,权值为点权 边i:(u,v,w)向u,v,连边,权 ...

  6. python学习第五天--函数进阶

    局部变量与全局变量下面代码中,old_price,rite为全局变量,final_price为局部变量 globals() 声明全局变量,在函数内可修改函数外的变量 内嵌函数:函数当中嵌套函数 闭包: ...

  7. Quartz实现数据库动态配置定时任务

    项目实战 或许实现的方式跟之前的代码有点不一样的 1.定时任务的配置信息 @Configuration public class ScheduleConfigration { @Autowired p ...

  8. Python之带有外部状态的生成器函数

    带有外部状态的生成器函数,也就是你的生成器暴露外部状态给用户解决: 定义一个类,然后把生成器函数放到 __iter__() 方法中过去 定义一个类,然后把生成器函数放到 __iter__() 方法中过 ...

  9. elasticsearch 基础 —— 集群原理

    空集群 如果我们启动了一个单独的节点,里面不包含任何的数据和 索引,那我们的集群看起来就是一个 图 1 "包含空内容节点的集群". 图 1. 包含空内容节点的集群 一个运行中的 E ...

  10. 一、dynamic

    一.dynamic使用: 从一直使用动态类型写接口 返回动态类型出现情况 1.返回接口每次不知道包含那些列(实体类解决) 2.操作的数据类型 不可知(参与数值计算-实体类解决明确类型) Dynamic ...