IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> jinja2模板生成测试报告 -> 正文阅读

[Python知识库]jinja2模板生成测试报告

最近实现了自动生成测试报告,采用了jinja2模板,向着CI又前进了一步,做一点总结。

背景说明:

  1. 原来测试数据是生成在一个excel文档中,该文档中展示了更详细的数据,而测试报告中只选部分数据放在一个表格中,且针对一个场景,测试多次会有多条数据,要对其进行筛选,取最优数据
  2. 测试时使用的服务器硬件信息,要根据不同的服务器插入对应的数据

方案说明:

  1. 数据筛选处理部分,使用pandas解决
  2. 不同服务器信息做成子html,作为参数传入主模板html中

对数据处理代码:

import pandas as pd

def data_analysis(excel_report_name, sheet_name):
	sheet_df = pd.read_excel(excel_report_name, sheet_name)
	row_num = len(sheet_df.index)
	if row_num != 0:
		# 确定唯一场景列
		uniq_columns = ['前置数据','组件','高可用场景','故障场景']
		# 1. 剔除不合格数据
		fail_data_index = sheet_df[(sheet_df['RPO']>20) & (sheet_df['组件']!='QQ')].index
		success_data_df = sheet_df.drop(fail_data_index)
		# 2. 在步骤1的基础上排序
		sort_df = success_data_df.sort_values(by=['前置数据','组件','高可用场景','故障场景','RPO'])
		
		# 3. 在步骤2的基础上,剔除重复场景数据,取最优数据,并重置index
		uniq_df = sort_df.drop_duplicates(subset=uniq_columns, keep='last').reset_index(drop=True)
		final_df = uniq_df
	return final_df
	

主模板html

template.html

<html>
    <head>
        <meta charset="UTF-8">
        <title>高可用测试报告</title>
        <style>
            body{
                margin:10px 100px 10px 100px;
            }
            p{
                text-indent:2em;
            }
            text_wrong{
                color: red;
            }
        </style>
    </head>
    <body>
    	 <h2>测试服务器信息</h2>
        {{ server_info }}
        <h2>测试数据分析</h2>
        <p>测试数据如下表</p>
        <table border="1">
            <tr>
                <th><b>序号</b></th>
                <th><b>前置数据</b></th>
                <th><b>组件</b></th>
                <th><b>高可用场景</b></th>
                <th><b>故障场景</b></th>
                <th><b>RTO</b></th>
                <th><b>RPO</b></th>
            </tr>
            {% for row_num in range(0,data_row_num) %}
            <tr>
                <td>{{ row_index + 1 }}</td>
                <td>{{ data_df.loc[row_index, '前置数据'] }}</td>
                <td>{{ data_df.loc[row_index, '组件'] }}</td>
                <td>{{ data_df.loc[row_index, '高可用场景'] }}</td>
                <td>{{ data_df.loc[row_index, '故障场景'] }}</td>
                <td>{{ data_df.loc[row_index, 'RTO'] }}</td>
                <td>{{ data_df.loc[row_index, 'RPO'] }}</td>
            </tr>
        </table>
    </body>
</html>

子模板html

sub_module.html

<div>
    <meta charset="utf-8">
    <style>
        table{
            text-align: center;
        }
    </style>
    <table border="1">
        <tr>
            <td class="table" colspan="3">{{ myserverip }}</td>
        </tr>
        <tr>
            <td>类型</td>
            <td>配置</td>
            <td>数量</td>
        </tr>
        <tr>
            <td>处理器</td>
            <td>intel</td>
            <td rowspan="4">1</td>
        </tr>
        <tr>
            <td>内存</td>
            <td>128G</td>
        </tr>
        <tr>
            <td>磁盘</td>
            <td>890G</td>
        </tr>
        <tr>
            <td>管理网络</td>
            <td>1*4端口千兆网卡</td>
        </tr>
    </table>
</div>

对模板进行渲染代码:

from jinja2 import Environment, FileSystemLoader

def html_report_render(test_data_df):
	env = Environment(loder=FileSystemLoader)
	template = env.get_template('template.html')
	# 对子模板html进行渲染
	sub_module = env.get_template('sub_module.html').render(
		myserverip = '127.0.0.1')
	with open("gaokeyong_report.html", "w+", encoding="utf-8") as f:
		out_report = template.render(
		server_info = sub_module, #子模板传入主模板中
		data_row_num = len(test_data_df.index),
		data_df = test_data_df)
		f.write(out_report)
		f.close()

这样就能自动化生成一份测试报告,基本思路就是,对数据处理,使用jinja2写html模板,使用数据对模板进行渲染,最后生成测试报告。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:32:47  更:2022-03-22 20:35:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:32:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码