首页 > 编程语言 >python接口自动化(二十八)--html测试 报告——下(详解)

python接口自动化(二十八)--html测试 报告——下(详解)

时间:2024-07-16 14:27:57浏览次数:13  
标签:python self decode -- uo html str ue python3

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

1.简介

  五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧。一天不学习,自己知道;两天不学习,对手知道;三天不学习,大家知道;一周不学习,智商输给猪。好了开个玩笑都逗大家一乐,但是想想还是有道理的。那就进

入正题:上一篇我们批量执行完用例后,已经生成的测试报告是生成 HTML 格式的。但是我们可以看出那个官方的测试报告既不美观也不大方,我们这里需要优化一下,优化的让人赏心悦目,就和看到一个美女一样看了一眼,忍不住回头再多

看一眼  - _ - 并且把上一篇遇到的问题列举解决一下。

2.python3如何改动下载的HTMLTestRunner

2.1HTMLTestRunner.py 的python3 版本

由于 HTMLTestRunner.py 原本就是python2版本,目前还没找到python3版本,所以需要我们自己修改 HTMLTestRunner.py 文件。

2.1.1. 修改的地方

问题一:No module named StringIO

原因:python 3 中 没有 StringIO 这个模块。这里我们需要使用io 这个模块来代替。

解决方法:

第94行引入的名称要改,从 import StringIO 改成import io。

相应的,539行 self.outputBuffer = StringIO.StringIO() 要改成self.outputBuffer = io.BytesIO()

问题二:AttributeError: 'dict' object has no attribute 'has_key'

原因:python 3 字典类型的object 已经不支持 has_key函数,我们需要使用in 来进行遍历。

解决方法:

定位到642行,if not rmap.has_key(cls): 需要换成 if not cls in rmap:

问题三:'str' object has no attribute 'decode'

原因:python3 里面对字符的操作中,decode已经拿掉了。

解决方法:

定位到772行,把 ue = e.decode('latin-1') 直接改成 ue = e 。

另外766还有类似的uo = o.decode('latin-1'),改成 uo=o ;

问题四 :TypeError: can't concat bytes to str

原因:定位一下,报在了778行的内容escape(uo+ue) 。这是因为我们上面给uo赋值的时候,走的是else流程,uo被赋值的是bytes类型的值。 而bytes类型不能直接转化为str类型。所以我们需要在前面给uo赋值的时候先将bytes类型转换为 str类型。

解决方法:

修改768行的 uo = o ,直接改成 uo = o.decode('utf-8') 。

另外 774还有类似的  ue = e, 改成 ue = e.decode('utf-8')。

问题五:TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and 'RPCProxy'

原因: python3  不支持 print >> sys.stderr 这种写法,这里定义输出流的话,采用print("This is print str",file=sys.stderr) 这种方式。

解决方法:

定位到631行,把print的语句修改掉,原来是print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime), 可改成 print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)

问题六:TypeError: 'str' does not support the buffer interface

原因:定位一下,问题出在118行,这里s是str类型,我们需要把传过来的s转化为bytes类型。

解决方法:

定位到118行,把 self.fp.write(s) 修改为 self.fp.write(bytes(s,'UTF-8')) 即可。

2.1.2. 保存

修改后对HTMLTestRunner.py 保存一下。

2.1.3. 调用语句更改

python3 里面打开文件使用 open,不要再去用file了。

即 fp = file(filename,'wb')替换成 fp = open(filename,'wb');

关闭该文件可用fp.close()

备注: 改动之后,中文也不会乱码。

3.中文乱码

1、测试报告中,msg 自定义异常内容有中文情况会出现乱码,如图所示:

 

2、找到 HTMLTestRunner.py 文件,搜索:uo =

3、找到红色区域设置编码的两个地方

4、注释掉红色区域这两个设置,重新添加编码格式为:uo = o.decode('utf-8') ue = e.decode('utf-8'),或者在此基础上直接修给成uo = o.decode('utf-8') ue = e.decode('utf-8'),建议初学者还是用第一种方法。这样出错了,可以很快还原,否则

在碰到更复杂的代码直接修改就可能会遇到问题

5、修改好之后记得保存,重新运行,乱码问题就解决了

 4.python3 报告问题

1、各位小伙伴可以按照我前边的方法进行自己修改,或者找我要也是可以,注意在修改的时候空格和Tab的问题,否则运行会报这样的错误

5.报告问题样式优化

1、优化是一些前端和CSS知识,在这里就不做详细介绍了,有兴趣的可以找我探讨一下,也可以和我要一下那个优化后的报告文件,优化后报告展示:

 6.小结

1、关于生成报告,优化报告就是这么简单,小伙伴们练起来吧!

2、为了新的报告不会覆盖掉老的测试报告,可以按图中的红色部分圈起来的方法实现

 3、参考代码(增加一行代码,测试报告的路径修改一下)

1 # 获取当前时间,这样便于下面的使用。
2 now = time.strftime("%Y-%m-%M-%H_%M_%S", time.localtime(time.time()))
3 #保存生成报告的路径
4 report_path =  "C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\result"+now+".html"

 每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

标签:python,self,decode,--,uo,html,str,ue,python3
From: https://blog.csdn.net/qq_23827149/article/details/140465395

相关文章

  • 如何在PHP中操作XML文件?
    在PHP中操作XML文件,可以使用多种方法和类库。以下是几种常见的方法:1:DOMDocument:DOMDocument是PHP内置的一个类,用于读取、修改和生成XML文档。使用DOMDocument可以对整个XML文档进行遍历和修改。示例代码:$xml=newDOMDocument();$xml->load('example.xml');......
  • PostGIS简单使用
    瀚高数据库目录环境文档用途详细信息环境系统平台:Linuxx86-64RedHatEnterpriseLinux7版本:14文档用途系列性的介绍PostGIS及GIS周边的相关资料,本文介绍PostGIS简单使用详细信息·登录数据库:[postgres@localhost~]$psqlpostgrespostgres·创建pos......
  • Llama - 微调
    本文翻译整理自:https://llama.meta.com/docs/how-to-guides/fine-tuning文章目录微调实验跟踪RecipesPEFTLoRAtorchtuneHuggingFacePEFTLoRAQLoRA微调如果你想通过编写代码来学习,强烈建议你查看了解Llama3notebook。这是一个开始对MetaLlama进行最常见......
  • vue3中如何使用vuex
    在Vue3中,可以使用Vuex来进行状态管理。下面是在Vue3中使用Vuex的步骤:安装Vuex:使用npm或yarn命令行工具安装Vuex库。npminstallvuex创建Vuexstore:在src文件夹中创建一个store文件夹,并在其中创建一个index.js文件。在index.js文件中,引入Vue和Vuex库,创建一个新的Store实......
  • Unsloth 微调 Llama 3
    本文参考:https://colab.research.google.com/drive/135ced7oHytdxu3N2DNe1Z0kqjyYIkDXp改编自:https://blog.csdn.net/qq_38628046/article/details/138906504文章目录一、项目说明安装相关依赖下载模型和数据二、训练1、加载model、tokenizer2、设置LoRA训练参数3......
  • d3.js生成知识图谱--实现节点的颜色分类,节点点击事件处理
    首先看一下节点的数据内容:nodes:[{id:1,name:'刘备',type:'皇上'},{id:2,name:'关羽',type:'将军'},{id:3,name:'张飞',type:'将军'},{id:4,name:'诸葛亮',type:......
  • OpenCompass - 大模型评测
    文章目录一、关于OpenCompass概览组成评测对象工具架构能力维度设计思路通用能力学科综合能力知识能力推理能力理解能力语言能力安全能力评测方法客观评测主观评测(即将发布)特点路线图......
  • 白山云荣获信通院“算网安全行业应用优秀案例”奖
    日前,在由中国通信标准化协会算网融合产业及标准推进委员会与信通院共同组织召开的“2024年算网融合产业发展大会”上,白山云凭借创新的SD-WAN算网融合方案,荣获“算网安全行业应用优秀案例”奖。算网融合是多元异构、海量泛在的算力设施,通过网络连接形成一体化算网技术与服务......
  • UE MultiLineTraceByChannel函数返回只有一个对象的问题
    问题描述MultiLineTraceByChannel,看函数名字是返回射线检测到的所有对象,实际使用过程中,发现返回的数组中只又一个对象。MultiLineTracebyChannel可以看下官方的文档解释:此指南说明如何使用MultiLineTracebyChannel蓝图节点返回在Visilibity通道上响应的所有Acto......
  • 暴力风扇无刷方案
    方案名称:暴力风扇便携式涡轮扇采用高速无刷电机、螺旋压缩风道,释放风力可达普风扇的8—10倍。直流高速无刷电机具有安全、寿命长特点。使用18650三元锂电池供电,轻便、小巧便于携带。1、电池组:三元锂186502000mAH×27.4V电池上带有保护板、2Pin出线2、电机:直......