python解决ModuleNotFoundError No module named 'HTMLTestRunner'

本文详细介绍了如何在Python3环境下使用HTMLTestRunner进行单元测试报告的生成,包括必要的代码修改,如替换StringIO为io.StringIO,调整字典成员检查方式等,确保在Python3中正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTMLTestRunner是Python标准库的unittest模块的扩展,无法通过pip安装;

py2解决方法:

从http://tungwaiyip.info/software/HTMLTestRunner.html下载HTMLTestRunner.py并将文件放到python2安装目录的Lib下,然后再次运行文件,可成功运行!

py3解决方法:

总结:

第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;

第775行,将ue = e.decode(‘latin-1‘)修改成ue = e;

第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime))

下面是踩坑过程:

从http://tungwaiyip.info/software/HTMLTestRunner.html下载HTMLTestRunner.py并将文件放到python3安装目录的Lib下,然后再次运行文件

在HTMLTestRunner的94行中,是使用的StringIO,但是Python3中,已经没有StringIO了。取而代之的是io.StringIO。所以将此行修改成import io

在HTMLTestRunner的539行中,self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

继续执行代码,发现报异常如下:

前往644行修改代码:if cls not in rmap

继续执行代码,又发现报异常如下:

前往769行修改代码: uo = e ; 同时将776行修改代码:ue = e

继续执行,发现还报异常:

前往633行修改代码:print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime - self.startTime))

再次执行,代码运行成功,无异常!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值