本文主要是介绍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 执行程序时报错问题的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!