HTMLTestRunner生成的测试报告为空且用python run 执行程序时报错问题的解决办法

本文主要是介绍HTMLTestRunner生成的测试报告为空且用python run 执行程序时报错问题的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

(1)首先我们要知道HTMLTestRunner是什么用来做什么的。HTMLTestRunner说白了就是一个.py文件,我们安装的python是没有自带的,需要我们手动下载来放到python的库里。放进去以后我们就可以通过这个文件来生成我们的自动化测试报告。
(2)其次我们要知道用python unit-test执行程序时是不执行HTMLTestRunner生成测试报告的,要生成测试报告可以对unittest框架稍作改动或是直接用python run执行即可。
(3)最后我们要知道为什么就算我们用python run 执行程序后程序依旧会报错且生成的测试报告为空。

解疑答惑

(一)HTMLTestRunner的下载

下载地址为:http://tungwaiyip.info/software/HTMLTestRunner.html
如果界面点击下载是直接打开一个浏览器界面显示一篇代码时,那就把它全部复制下来,新建一个txt文档粘贴进去并将文档名字改为HTMLTestRunner的.py文件。

(二)HTMLTestRunner的安装

将该文件放到python安装路径下的Lib下,如…\Python38\Lib 。需要使用时import HTMLTestRunner即可

(三)为什么就算我们用python run 执行程序后程序依旧会报错且生成的测试报告为空的解决办法

(1)为什么会报错呢?
原因一:那是因为HTMLTestRunner是基于python2写的,python3现阶段并没有现成的HTMLTestRunner.py文件。我们将下载下的HTMLTestRunner,py直接使用就会引起一系列的报错
(2)为什么生成的报告为空呢?
原因一:由于上诉报错引起
原因二:文件没有关闭

报错解决办法:将下载的HTMLTestRunner.py文件进行下面项的修改
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第766行,将uo = o.decode(‘latin-1’)修改成uo = e
第772行,将ue = e.decode(‘latin-1’)修改成ue = e(网络上很多这句是没写的,遗漏了。这句不改会有提示错误且测试报告无法生成)
第774行,将ue = e.decode(‘latin-1’)修改成ue = e(网络上写的是775行是错误的,应该为774行)
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))

文件没有关闭导致测试报告为空的解决办法: 代码结尾加一个fp.close()如下所示

if __name__ == "__main__":
#测试套件testunit=unittest.TestSuite()
#添加测试用例到测试套件中testunit.addTest(Baidu("test_baidu_search"))
#定义个报告存放路径filename = 'D:\\report\\result.html'fp =open(filename,'wb')
#定义测试报告runner =HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'百度搜索测试报告',description=u'用例执行情况:')
#运行测试用例runner.run(testunit)
#关闭报告文件fp.close()

生成的测试报告效果图
在这里插入图片描述

这篇关于HTMLTestRunner生成的测试报告为空且用python run 执行程序时报错问题的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687845

相关文章

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O