起因

一直被测试报告的质量所困扰,

python的htmltestrunner,效果不满意,不支持py3,要手动改些地方

自定义pyh去拼接html,代码非常多,看得眼花缭乱,不好调试

这几天一直在看云测的测试报告,他们的测试报告非常漂亮,大部分是基于excel,于是进入到了excel中的研究中

云测的报告预览

Paste_Image.png

看看我用代码制作的简单接口测试结果报表

Paste_Image.png

Paste_Image.png

代码展示

# -*- coding: utf-8 -*-

import xlsxwriter

def get_format(wd, option={}):

return wd.add_format(option)

# 设置居中

def get_format_center(wd,num=1):

return wd.add_format({'align': 'center','valign': 'vcenter','border':num})

def set_border_(wd, num=1):

return wd.add_format({}).set_border(num)

# 写数据

def _write_center(worksheet, cl, data, wd):

return worksheet.write(cl, data, get_format_center(wd))

workbook = xlsxwriter.Workbook('report.xlsx')

worksheet = workbook.add_worksheet("测试总况")

worksheet2 = workbook.add_worksheet("测试详情")

def init(worksheet):

# 设置列行的宽高

worksheet.set_column("A:A", 15)

worksheet.set_column("B:B", 20)

worksheet.set_column("C:C", 20)

worksheet.set_column("D:D", 20)

worksheet.set_column("E:E", 20)

worksheet.set_column("F:F", 20)

worksheet.set_row(1, 30)

worksheet.set_row(2, 30)

worksheet.set_row(3, 30)

worksheet.set_row(4, 30)

worksheet.set_row(5, 30)

# worksheet.set_row(0, 200)

define_format_H1 = get_format(workbook, {'bold': True, 'font_size': 18})

define_format_H2 = get_format(workbook, {'bold': True, 'font_size': 14})

define_format_H1.set_border(1)

define_format_H2.set_border(1)

define_format_H1.set_align("center")

define_format_H2.set_align("center")

define_format_H2.set_bg_color("blue")

define_format_H2.set_color("#ffffff")

# Create a new Chart object.

worksheet.merge_range('A1:F1', '测试报告总概况', define_format_H1)

worksheet.merge_range('A2:F2', '测试概括', define_format_H2)

worksheet.merge_range('A3:A6', '这里放图片', get_format_center(workbook))

_write_center(worksheet, "B3", '项目名称', workbook)

_write_center(worksheet, "B4", '接口版本', workbook)

_write_center(worksheet, "B5", '脚本语言', workbook)

_write_center(worksheet, "B6", '测试网络', workbook)

data = {"test_name": "智商", "test_version": "v2.0.8", "test_pl": "android", "test_net": "wifi"}

_write_center(worksheet, "C3", data['test_name'], workbook)

_write_center(worksheet, "C4", data['test_version'], workbook)

_write_center(worksheet, "C5", data['test_pl'], workbook)

_write_center(worksheet, "C6", data['test_net'], workbook)

_write_center(worksheet, "D3", "接口总数", workbook)

_write_center(worksheet, "D4", "通过总数", workbook)

_write_center(worksheet, "D5", "失败总数", workbook)

_write_center(worksheet, "D6", "测试日期", workbook)

data1 = {"test_sum": 100, "test_success": 80, "test_failed": 20, "test_date": "2018-10-10 12:10"}

_write_center(worksheet, "E3", data1['test_sum'], workbook)

_write_center(worksheet, "E4", data1['test_success'], workbook)

_write_center(worksheet, "E5", data1['test_failed'], workbook)

_write_center(worksheet, "E6", data1['test_date'], workbook)

_write_center(worksheet, "F3", "分数", workbook)

worksheet.merge_range('F4:F6', '60', get_format_center(workbook))

pie(workbook, worksheet)

# 生成饼形图

def pie(workbook, worksheet):

chart1 = workbook.add_chart({'type': 'pie'})

chart1.add_series({

'name': '接口测试统计',

'categories':'=测试总况!$D$4:$D$5',

'values': '=测试总况!$E$4:$E$5',

})

chart1.set_title({'name': '接口测试统计'})

chart1.set_style(10)

worksheet.insert_chart('A9', chart1, {'x_offset': 25, 'y_offset': 10})

def test_detail(worksheet):

# 设置列行的宽高

worksheet.set_column("A:A", 30)

worksheet.set_column("B:B", 20)

worksheet.set_column("C:C", 20)

worksheet.set_column("D:D", 20)

worksheet.set_column("E:E", 20)

worksheet.set_column("F:F", 20)

worksheet.set_column("G:G", 20)

worksheet.set_column("H:H", 20)

worksheet.set_row(1, 30)

worksheet.set_row(2, 30)

worksheet.set_row(3, 30)

worksheet.set_row(4, 30)

worksheet.set_row(5, 30)

worksheet.set_row(6, 30)

worksheet.set_row(7, 30)

worksheet.merge_range('A1:H1', '测试详情', get_format(workbook, {'bold': True, 'font_size': 18 ,'align': 'center','valign': 'vcenter','bg_color': 'blue', 'font_color': '#ffffff'}))

_write_center(worksheet, "A2", '用例ID', workbook)

_write_center(worksheet, "B2", '接口名称', workbook)

_write_center(worksheet, "C2", '接口协议', workbook)

_write_center(worksheet, "D2", 'URL', workbook)

_write_center(worksheet, "E2", '参数', workbook)

_write_center(worksheet, "F2", '预期值', workbook)

_write_center(worksheet, "G2", '实际值', workbook)

_write_center(worksheet, "H2", '测试结果', workbook)

data = {"info": [{"t_id": "1001", "t_name": "登陆", "t_method": "post", "t_url": "http://XXX?login", "t_param": "{user_name:test,pwd:111111}",

"t_hope": "{code:1,msg:登陆成功}", "t_actual": "{code:0,msg:密码错误}", "t_result": "失败"}, {"t_id": "1002", "t_name": "商品列表", "t_method": "get", "t_url": "http://XXX?getFoodList", "t_param": "{}",

"t_hope": "{code:1,msg:成功,info:[{name:123,detal:dfadfa,img:product/1.png},{name:456,detal:dfadfa,img:product/1.png}]}", "t_actual": "{code:1,msg:成功,info:[{name:123,detal:dfadfa,img:product/1.png},{name:456,detal:dfadfa,img:product/1.png}]}", "t_result": "成功"}],

"test_sum": 100,"test_success": 20, "test_failed": 80}

temp = 4

for item in data["info"]:

_write_center(worksheet, "A"+str(temp), item["t_id"], workbook)

_write_center(worksheet, "B"+str(temp), item["t_name"], workbook)

_write_center(worksheet, "C"+str(temp), item["t_method"], workbook)

_write_center(worksheet, "D"+str(temp), item["t_url"], workbook)

_write_center(worksheet, "E"+str(temp), item["t_param"], workbook)

_write_center(worksheet, "F"+str(temp), item["t_hope"], workbook)

_write_center(worksheet, "G"+str(temp), item["t_actual"], workbook)

_write_center(worksheet, "H"+str(temp), item["t_result"], workbook)

temp = temp -1

init(worksheet)

test_detail(worksheet2)

workbook.close()

基本上直接参考上面的api就行了,没有什么技术难点,后续的测试报告决定了在excel在开发展示

python 漂亮的excel_python 自定义漂亮的 excel 结果测试报告相关推荐

  1. python xlwt写入excel_python xlwt模块写入excel超过65536行报错问题解决方法

    上篇文章中将内容写到excel中使用import xlwt包,后来发现文件写入超过65536行的时候就会报错,无法转换成功, xls后缀文件,只支持这么多行,在网上搜索一下,解决方法可以写多个shee ...

  2. python xlwt写入excel_python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

  3. python基础教程 excel_Python新手入门:Excel基本操作(二)

    写入 Excel 首先当然是安装第三方模块:pip install xlsxwriter 首先我们需要先创建一个 WorkBook:import xlsxwriter workbook = xlsxw ...

  4. python列表导出excel_python list格式数据excel导出方法

    如下所示: # _*_ coding:utf-8 _*_ #----------------------------------------------- # import modules #---- ...

  5. python openpyxl读取excel_python 使用openpyxl读取excel数据

    openpyxl介绍 ​ openpyxl是一个开源项目,它是一个用于读取/写入Excel 2010文档(如xlsx .xlsm .xltx .xltm文件 )的Python库,如果要处理更早格式的E ...

  6. python openpyxl读取excel_Python使用openpyxl读写excel文件

    这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 1.读取Excel文件 默认打开的文件为可读写,若有需要可 ...

  7. python自动化之文件处理_Python自动化办公之Word批量转成自定义格式的Excel

    作者:青春阳光king python实现word转成自定义格式的excel文档(解决思路和代码)支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符. 最近在开发一个答题类的小程 ...

  8. python简单代码画图-Python竟能画这么漂亮的花,帅呆了(代码分享)

    阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...

  9. 用python画花瓣-Python竟能画这么漂亮的花,帅呆了(代码分享)

    阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...

最新文章

  1. Java并发基础01. 传统线程技术中创建线程的两种方式
  2. JS小功能(操作Table--动态添加删除表格及数据)实现代码
  3. [物理学与PDEs]第1章第4节 电磁能量和电磁动量, 能量、动量守恒与转化定律 4.3 电磁能量 (动量) 密度, 电磁能量流 (动量流) 密度...
  4. ADPC2-G 希望
  5. java string返回_Java的String字符串内容总结
  6. 为什么计算机休眠风扇还转,Win7系统进入睡眠模式后电脑风扇还在转的解决方法...
  7. 视频语义显著实例分割数据集SESIV
  8. 哔哩哔哩公司swot分析_可口可乐公司2019年SWOT分析
  9. python的装饰器迭代器与生成器_详解python中的生成器、迭代器、闭包、装饰器
  10. java数字转换32位字符串_java字符串和数字转换工具
  11. Hadoop原理——HDFS原理
  12. arcmap 10.2 shp合并
  13. 很好的--张量(Tensor)的技术以及它在不同场景中的应用--转载贪心科技
  14. 红色警戒2修改器原理百科(二)
  15. 分发自动化_使用bitrise自动化应用分发
  16. 二手苹果8多少钱_苹果6splus换主板多少钱
  17. 一个 Gitlab 帐号无法访问文件、克隆项目问题的解决
  18. 概率论:古典概型与伯努利概型
  19. 用DTM实现网页转化跟踪,广告投放效果实时监测
  20. 前端上传预览文件以及下载,node后端存储文件以及返回前端文件流下载

热门文章

  1. winform 控件半透明设置
  2. 和李洪强一起学设计01 PS第一天
  3. Web 数据存储总结
  4. [Java]读取文件方法大全
  5. AndroidManifest.xml文件剖析
  6. Windows中如何正确认识和安装驱动程序
  7. voliate修饰数组有作用吗_Arrays.asList()真的就把数组转换为了List集合吗?
  8. p10平板电脑android,8英寸安卓系统 Newpad P10平板电脑评测
  9. 调用父级方法_通信:找到任意组件实例的findComponents系列方法,5个终极方案
  10. 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...