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

简介

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

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

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

 如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

python3如何改动下载的HTMLTestRunner

HTMLTestRunner.py 的python3 版本

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

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. 保存

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

3. 调用语句更改

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

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

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

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

中文乱码

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、修改好之后记得保存,重新运行,乱码问题就解决了

 python3 报告问题

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

报告问题样式优化

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

 小结

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"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 git 不能自动添加 index.tsx 的问题

最近在写 React Native 项目,发现 index.tsx 总是无法添加到 git 中,需要根据路径强制 add,经过一番搜索,终于解决了这个问题,原来是因为 git 的全局 config 文件中自动添加了 index.tsx 文件。 环境: Mac…

静态路由介绍

目录 静态路由配置方法(基本配置): 静态路由的拓展配置 负载均衡 1.环回接口——测试 2.手工汇总——子网汇总 3.路由黑洞(黑洞路由) 4.缺省路由 5.空接口——NULL 0 6.浮动静态路由 静态路由配置方法(基本配置&#x…

DHorse v1.2.1 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统,具有持续集成、持续部署、微服务治理等功能,无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用,主要特点:部署简单、操作简洁、功能快速。 优化内…

「深度学习之优化算法」(十三)蝙蝠算法

1. 蝙蝠算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   蝙蝠算法(Bat Algorithm)是受蝙蝠回声定位的特性启发而提出的新兴算法,提出时间是2010年,虽然距今(2020)有近10年,但与其它的经典算法相比仍算一个新算法。算法也已有一定规模的研究和应用,但仍…

Android 14适配

Google I/O 2023 发布的 Android beta2 ,Android 14 将在2023年第三季度发布。Google Play 已经开始强制要求targetSdkVersion 33适配,所以 targetSdkVersion 34适配也是非常有必要的。 前台服务类型(Foreground service types are required&…

PyTorch: 池化-线性-激活函数层

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-池化-线性-激活函数层池化层最大池化:nn.MaxPool2d()nn.AvgPool2d()nn.MaxUnpool2d()线性层激…

HTML案例:全屏切换滚动效果

一个父级div包裹4个子级div&#xff0c;4个子盒子的宽高占满当前屏幕&#xff0c;滚动导航条自动切换到下一页/上一页 1、HTML代码 <style>* {margin: 0;padding: 0;}.container {height: 100vh;overflow-y: scroll;}.container div {width: 100%;height: 100vh;}</s…

Java设计模式之结构型-桥接模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 1、支付方式 2、支付渠道 五、总结 一、基础概念 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;其主要目的是“将抽象部分与实现部分分离&#xff0c;使它们都可以独立地…

[解决Github 克隆错误] unable to access ‘xxx‘: Recv failure: Connect

1.错误描述&#xff1a; 从GitHub上克隆仓库到本地&#xff0c;出现错误&#xff1a; unable to access https://github.com/xxxx: Recv failure: Connection was reset。 克隆失败。 2.第一次解决此问题&#xff1a;从终端输入&#xff1a; git config --global http.sslVer…

安装TensorFlow时报错 zsh: illegal hardware instruction python

解决方案参考 https://stackoverfLow.com/questions/65383338/zsh-illegal-hardware-instruction-python-when-installing-tensorflow-on-macbook 以下为详细步骤 安装python3.8.5环境 下载tensorflow-2.4.1-py3-none-any.whl文件 下载地址&#xff1a;https://drive.google…

GOPATH、GOROOT(VSCode编写第一个go程序)

1. GOROOT和GOPATH GOROOT 和 GOPATH 都是 Go 语言中的环境变量&#xff0c;用于指定 Go 工具链和工作区的路径。 GOROOT 指定了 Go 工具链的安装路径&#xff0c;它包含了 Go 语言的标准库、编译器等工具。在使用 Go 编译器、运行时等工具时&#xff0c;它们会默认从 GOROOT…

LabVIEW开发图像采集和图像处理程序

LabVIEW开发图像采集和图像处理程序 扫描电子显微镜&#xff08;SEM&#xff09;是一种功能强大的工具&#xff0c;广泛用于高分辨率的生物和半导体样品检测。然而&#xff0c;对于大面积或3D成像&#xff0c;SEM成像是一个耗时的过程。MBSEM旨在通过同时扫描多个像素来减少采…

Android 中的动画有哪几类,它们的特点和区别是什么

Android 中的动画有哪几类&#xff0c;它们的特点和区别是什么 在Android中&#xff0c;常见的动画类型可以分为以下几类&#xff1a; View 动画&#xff08;View Animation&#xff09;&#xff1a; 特点&#xff1a;View动画是一种基于View对象的动画&#xff0c;通过对Vi…

Vue3使用element-plus实现弹窗效果-demo

使用 <ShareDialog v-model"isShow" onChangeDialog"onChangeDialog" /> import ShareDialog from ./ShareDialog.vue; const isShow ref(false); const onShowDialog (show) > {isShow.value show; }; const onChangeDialog (val) > {co…

关于 Eclipse 的一场 “三角关系”

上个世纪 90 年代&#xff0c;世界上的计算机要么不联网&#xff0c;要么在企业内部联网。但是&#xff0c;在互联网的概念下&#xff0c;计算机之间共享信息和资源的需求成为了必要。 1995 年 5 月&#xff0c;Java 横空出世。Java 的父亲是当时凭借 Solaris 操作系统风头正盛…

springboot集成quartz(集群)实现任务定时/立即执行

添加pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</a…

vue3笔记-基础篇

vue3笔记 第一章 基础篇 MVVM框架 vue数据绑定方法 Object.defineProperty() vue2使用的数据绑定方法 var obj {} Object.defineProperty(obj,"myname",{get(){consloe.log("get")}set(value){console.log("set",value)} }proxy代理 vue…

【C#】五种单例模式详解

单例模式有五种&#xff1a; 饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式。 1.饿汉式 public class SingleTon1 { private static SingleTon1 instance new SingleTon1(); private SingleTon1() { }public SingleTon1 getInstance(){return instance; …

Golang 中的数组Array以及Slice底层实现

1、Array(数组) 数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素 (element),这种类型可以是任意的原始类型,比如 int 、 string 等,也可以是用户自定义的类型。一个数组包含的元素个数被称为数组的长度。 在 Golang 中数组是一个长度固定的数据类…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改&#xff0c;芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录&#xff1a; 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…