python修改静态html_Python写静态HTML

Python写静态HTML

目录背景

灵感

技巧

扩展

背景

因为近期工作需要,常常要将测试结果/数据统计、汇总和展示,因此会有写静态HTML的需求,本文记录下python写静态HTML的小技巧

灵感

灵感时来源于unittest测试框架最常用的报告插件:HTMLTestRunner,该插件本身基于python2且已经更新了,好在@虫师一直在维护和更新这个插件,使得它能继续被大家所使用,了解详情请移步:SeldomQA/HTMLTestRunner

回到HTMLTestRunner报告插件,阅读源码发现,作者只用了一个python文件便巧妙的将写HTML、页面绘制和数据嵌入搞定了。进一步分析可以看到,作者先是在Template基类中定义了测试报告的HTML结构模板和各个模块/表格模板,然后再以格式化输入的形式给每一个模板中填充目标数据,再将填充好的模板以格式化输入的形式填充到HTML结构模板中,最后再将所有内容写成一个HTML文件即可。

class Template_mixin(object):

"""

Define a HTML template for report customerization and generation.

Overall structure of an HTML report

HTML

+------------------------+

|html |

| head |

| |

| STYLESHEET |

| +----------------+ |

| | | |

| +----------------+ |

| |

| /head |

| |

| body |

| |

| HEADING |

| +----------------+ |

| | | |

| +----------------+ |

| |

| REPORT |

| +----------------+ |

| | | |

| +----------------+ |

| |

| ENDING |

| +----------------+ |

| | | |

| +----------------+ |

| |

| /body |

|/html |

+------------------------+

"""

可以看到,这样的设计其实优点在于非常小巧和轻量,缺点在于可维护和可移植性差,数据量小还尚可,不太适合大量数据的统计和绘制。

技巧

这种设计的关键在于建模板,然后按需填充数据,最后再写HTML,通常我的做法是:

网上找到想要的页面或着表格,copy其HTML结构,将变动的部分(需要动态填充数据的部分)提取出来,并用格式化输入形式替代,如:%(style)s, %(rows)s

HTML_TMPL = r"""

!DOCTYPE html

html lang="en"

head

titleOverview/title

meta charset="UTF-8"

meta name="viewport" content="width=device-width, initial-scale=1"

%(style)s

/head

body

h1 总览 /h1

table class="pure-table pure-table-bordered"

thead

tr

th#/th

th设备/th

th环境/th

th耗时/th

th结果/th

th统计/th

th报告/th

/tr

/thead

tbody

tr

%(rows)s

/tr

tr

tdnbsp;/td

tdnbsp;/td

tdnbsp;/td

tdnbsp;/td

tdnbsp;/td

tdnbsp;/td

tdnbsp;/td

/tr

tr

%(total)s

/tr

/tbody

/table

/body

/html

""" # style, rows, total

将变动的部分单拎出来,形成模板,依然用格式化输入形式替代

TBODY_TOTAL_TMPL = """

tr

th 合计 /th

th colspan="6" 通过率: {passing_rate}% nbsp;nbsp; 失败率: {failure_rate}%

nbsp;nbsp; 错误率: {error_rate}% nbsp;nbsp; 跳过率: {skip_rate}% /th

/tr

"""

按照模板格式,组装数据并填充

total += TBODY_TOTAL_TMPL.format(

passing_rate=np.mean(p_rates).round(2),

failure_rate=np.mean(f_rates).round(2),

error_rate=np.mean(e_rates).round(2),

skip_rate=np.mean(s_rates).round(2))

最后将所有数据填充到主模板,并写HTML

# write reporter

with open(filepath, 'w', encoding='utf-8') as wf:

wf.write(HTML_TMPL % dict(rows=rows, total=total, style=STYLE_TMPL))

扩展

目前python自动化测试常用的报告插件还有,allure

除过本文介绍写HTML的方法之外,还可以使用,jinjia2

Python写静态HTML 相关文章

C++类

类内对象 静态: #include iostream#include stringusing namespace std;class Student {public: Student(const string name1, int age1) { }public: static int m_total; //静态成员变量 /* static 成员变量属于类,不属于某个具体的对象,即使创建多个对象

python数据类型(元祖tuple)

元祖 元组(tuple)就是不可更改的列表,一旦创建,便不可更改。除了表示的方式有点不一样、元组的元素不可更改,元组的其他特性与列表基本一致。一、元祖的创建 t=tuple() #创建一个空元组t1=() #创建一个空元组t2=(1,) 或 t2=1, #创建一个只有一个元素的元

Javascript 事件(静态注册和动态注册概念区分)

js中的事件 什么是事件事件是电脑输入设备与页面进行交互的响应,我们称之为事件 事件类型 鼠标单击:例如单击button、选中checkbox和radio等元素;鼠标进入、悬浮或退出页面的某个热点:例如鼠标停在一个图片上方或者进入table的范围; 键盘按键:当按下按

mac上安装 pip install Appium-Python-Client报错:ERROR: Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host=files.pythonhosted.org, port=443): Max retries exceeded with

ERROR: Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/21/ca/3261b5da5b6851ea5297f44b2dc7f3167f00a7ce3e99907b49bf69c56360/Appium-

跟光磊学Python开发-字符串基本使用

跟光磊学Python开发-字符串基本使用 跟光磊学Python开发 字符串的定义和使用 字符串是使用一对引号包含起来的若干字符 Python中支持如下四种字符串的定义方式,根据简单原则可以使用 ’‘ """字符串的定义方式@author tony 18601767221@163.com@version 2021

python 下五子棋

import mathimport tkinterfrom tkinter import *root = Tk()root.title('helloWorld')# 窗口尺寸# root.geometry('500x500')# 固定尺寸root.resizable(0, 0)# 棋盘中一格边长boxSize = 60# 横向格子数boxWidh = 8# 纵向格子数boxHigh = 9wid = boxSize * bo

linux上安装python3的方法,python2和python3共存,并设置python3为默认

1.安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2.安装gcc编译器 yum install gcc(yum命令不可用的话,需要找运维打开yum命令限制

Python3对接华三CAS平台Api-渐入佳境

--时间:2021年2月3日 --作者:飞翔的小胖猪 说明 。 环境 提前安装配置好prometheus+alertmanager+consul+node_exporter环境。 准备一台安装有python3的服务器 脚本 from http.cookiejar import CookieJar,MozillaCookieJarimport numpyimport _threadimpor

Day01— 机器学习的介绍和Python机器学习安装包的介绍与使用

第一章 机器学习介绍 1.1 什么是机器学习 1、定义:即让计算机在没有被显式编程的情况下,具备自我学习的能力。 2、白话理解:机器学习是一个计算机程序,针对某个特定任务,从经验中学习,并且越做越好。 3、机器学习最重要的内容: (1)数据:大量的经验

JSP基础知识

1.Servlet缺点 静态html与动态Java代码混在一起,难以维护; Servlet利用out.println()语句输出,开发效率低下; Eclipse调试困难,难发现错误 JSP解决了上述问题 2.JSP执行过程 JSP本身就是一种Servlet 浏览器向Tomcat发送要访问的jsp请求,Tomcat将jsp 转

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值