python之prettytable库的使用 您所在的位置:网站首页 python增加列表宽度 python之prettytable库的使用

python之prettytable库的使用

2024-07-06 18:20| 来源: 网络整理| 查看: 265

文章目录 一 什么是prettytable二 prettytable的简单使用1. 添加表头2. 添加行3. 添加列4. 设置对齐方式4. 设置输出表格样式5. 自定义边框样式6. 其它功能 三 prettytable在实际中的使用

一 什么是prettytable

prettytable是Python的一个第三方工具库,用于创建漂亮的ASCII表格。它支持带有列标题的表格,还支持颜色和自定义格式。使用prettytable可以轻松地将数据可视化为表格,方便阅读和理解。 因为是第三方工具库,所以要先安装,安装命令如下

pip install prettytable 二 prettytable的简单使用 1. 添加表头

使用field_names来添加表头,传参是一个list对象

from prettytable import PrettyTable #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] print(tb) >>> +--------+------+-----+-----+-----+ | userId | name | sex | age | job | +--------+------+-----+-----+-----+ +--------+------+-----+-----+-----+ 2. 添加行

使用add_row()方法来添加行数据,传参是一个list对象

from prettytable import PrettyTable #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] #添加行数据 tb.add_row(['123', '张三', '男', '25', 'softtest']) print(tb) 3. 添加列

使用add_column()方法来添加列数据,add_column()有两个参数:第一个是列标题的名称,类型str;第二个是列对应的value,类型list,如下

from prettytable import PrettyTable #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] #添加行 tb.add_row(['123', '张三', '男', '25', 'softtest']) #添加列 tb.add_column('address', ['深圳']) print(tb) >>> +--------+------+-----+-----+----------+---------+ | userId | name | sex | age | job | address | +--------+------+-----+-----+----------+---------+ | 123 | 张三 | 男 | 25 | softtest | 深圳 | +--------+------+-----+-----+----------+---------+ 4. 设置对齐方式

使用align来设置对齐方式,默认居中对齐,其中l是向左对齐,c是居中对齐,r是向右对齐,如下

from prettytable import PrettyTable #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] #添加行 tb.add_row(['123', '张三', '男', '25', 'softtest']) tb.add_row(['124', '李四', '男', '25', 'Java']) #添加列 tb.add_column('address', ['深圳', '北京']) #设置对齐方式align: l,r,c tb.align = 'l' print(tb) >>> +--------+------+-----+-----+----------+---------+ | userId | name | sex | age | job | address | +--------+------+-----+-----+----------+---------+ | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | +--------+------+-----+-----+----------+---------+ 4. 设置输出表格样式

使用set_style()来控制数据表格的样式,set_style()默认参数是DEFAULT,如果需要更换为其它方式,则需要import导入后使用,如下 表格样式

from prettytable import PrettyTable from prettytable import MARKDOWN, MSWORD_FRIENDLY #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] #添加行 tb.add_row(['123', '张三', '男', '25', 'softtest']) tb.add_row(['124', '李四', '男', '25', 'Java']) #添加列 tb.add_column('address', ['深圳', '北京']) #设置对齐方式align: l,r,c tb.align = 'l' #设置输出表格的样式 print("DEFAULT表格样式:") print(tb) tb.set_style(MSWORD_FRIENDLY) print("MSWORD_FRIENDLY表格样式:") print(tb) tb.set_style(MARKDOWN) print("MARKDOWN表格样式:") print(tb) >>> DEFAULT表格样式: +--------+------+-----+-----+----------+---------+ | userId | name | sex | age | job | address | +--------+------+-----+-----+----------+---------+ | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | +--------+------+-----+-----+----------+---------+ MSWORD_FRIENDLY表格样式: | userId | name | sex | age | job | address | | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | MARKDOWN表格样式: | userId | name | sex | age | job | address | |:-------|:-----|:----|:----|:---------|:--------| | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | 5. 自定义边框样式

在prettyble中表格边框由三部分组成:横边框,竖边框和边框连接符,由以下几个属性控制

table.border 控制是否显示边框,默认是True table.junction_char 控制边框连接符 table.horizontal_char 控制横边框符号 table.vertical_char 控制竖边框符号 from prettytable import PrettyTable #创建Prettytable实例 tb = PrettyTable() #添加表头 tb.field_names = ['userId', 'name', 'sex', 'age', 'job'] #添加行 tb.add_row(['123', '张三', '男', '25', 'softtest']) tb.add_row(['124', '李四', '男', '25', 'Java']) #添加列 tb.add_column('address', ['深圳', '北京']) #设置对齐方式align: l,r,c tb.align = 'l' #自定义边框样式 print("默认边框:") print(tb) tb.horizontal_char = '*' #横边框 tb.vertical_char = '|' #竖边框 tb.junction_char = '|' #边框连接符 print("自定义边框:") print(tb) >>> 默认边框: +--------+------+-----+-----+----------+---------+ | userId | name | sex | age | job | address | +--------+------+-----+-----+----------+---------+ | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | +--------+------+-----+-----+----------+---------+ 自定义边框: |********|******|*****|*****|**********|*********| | userId | name | sex | age | job | address | |********|******|*****|*****|**********|*********| | 123 | 张三 | 男 | 25 | softtest | 深圳 | | 124 | 李四 | 男 | 25 | Java | 北京 | |********|******|*****|*****|**********|*********| 6. 其它功能

prettytable还有很多其它功能,可以参考官网或者这篇文章:python用prettytable输出漂亮的表格

三 prettytable在实际中的使用

在实际的接口测试过程中,我们都要对返回的接口进行数据校验,包括但不限于返回状态码,单个字段值。为了能够快速知道,以及美化校验结果,我们可以使用prettytable来进行结果校验输出,如下。

返回接口:

{ "HEAD": { "xTypCod": null, "xHdrLen": "203", "xSysCod": null, "xDskSys": null, "xWkeCod": "WdcTrfSetBeg", "xKeyVal": null, "xIsuCnl": "X86", "xEncCod": null, "xDalCod": null, "xCmmTyp": null, "xOrgIsu": null, "xPreIsu": null, "xEntUsr": "", "xUsrPwd": null, "xIsuDat": "0", "xIsuTim": "0", "xMacCod": null, "xRtnLvl": null, "xRtnCod": "WYZQA76", "xDevNbr": null, "xTlrNbr": "100025", "xRqsNbr": null, "xCmmRsv": null, "xDocSiz": null, "xItvTms": null, "xMsgFlg": null, "xAppRsv": null }, "BODY": { "$ERRORMSG$": [ { "xErrMsg": "WYZQA76锁查步骤表记录失败,批次D019860641" } ] } }

校验脚本

from prettytable import PrettyTable import json import jsonpath response_data = """ { "HEAD": { "xTypCod": null, "xHdrLen": "203", "xSysCod": null, "xDskSys": null, "xWkeCod": "WdcTrfSetBeg", "xKeyVal": null, "xIsuCnl": "X86", "xEncCod": null, "xDalCod": null, "xCmmTyp": null, "xOrgIsu": null, "xPreIsu": null, "xEntUsr": "", "xUsrPwd": null, "xIsuDat": "0", "xIsuTim": "0", "xMacCod": null, "xRtnLvl": null, "xRtnCod": "WYZQA76", "xDevNbr": null, "xTlrNbr": "100025", "xRqsNbr": null, "xCmmRsv": null, "xDocSiz": null, "xItvTms": null, "xMsgFlg": null, "xAppRsv": null }, "BODY": { "$ERRORMSG$": [ { "xErrMsg": "WYZQA76锁查步骤表记录失败,批次D019860641" } ] } } """ def validate_data(data: dict, yqz: dict) -> None: """ :param data: 要校验的数据 :param yqz: 预期值 :return: None """ data = json.loads(data) tb = PrettyTable() #添加表头 tb.field_names = ['比较字段', '预期值', '实际值', '是否通过'] for k, v in yqz.items(): #用jsonpath查找预期值字段在返回数据resresponse_data的值 res = jsonpath.jsonpath(data, '$..' + k)[0] if v == res: tb.add_row([k, v, res, 'Y']) else: tb.add_row([k, v, res, 'N']) print(tb) #预期值数据 yqz = {'xRtnCod': 'WYZQA76', 'xErrMsg': 'WYZQA76锁查步骤表记录失败,批次D019860641'} #结果校验 validate_data(response_data, yqz)

效果

>>> +----------+------------------------------------------+------------------------------------------+----------+ | 比较字段 | 预期值 | 实际值 | 是否通过 | +----------+------------------------------------------+------------------------------------------+----------+ | xRtnCod | WYZQA76 | WYZQA76 | Y | | xErrMsg | WYZQA76锁查步骤表记录失败,批次D019860641 | WYZQA76锁查步骤表记录失败,批次D019860641 | Y | +----------+------------------------------------------+------------------------------------------+----------+

上面做了一个简单的演示,实际工作中可以结合自身需求封装成组件或者包,使用效果会更佳。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有