2021-08-05

@Python + unittest +HTMLTestRunner生成自动化测试报告(pycharm)

关于使用HTMLTestRunner 生成自动化测试报告过程中遇到的一些小问题

先上代码。

import unittest
from HTMLTestRunner import HTMLTestRunner

# 定义测试用例的目录为当前目录下的test_case目录
test_dir = './test_case'
# 使用discover方法调用其他目录下的测试用例
suit = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')

if __name__ == "__main__":
    # 生成HTML格式的报告
    filename = './test_report/result2.html'
    fp = open(filename, 'w',encoding='utf-8')
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title="测试报告",
                                           description="Win 10,Chrome Driver"
                                           )
    runner.run(suit)
    fp.close()

在摸索过程中一共遇到三个问题,在网上翻了半天资料终于都搞定了

一:HTMLTestRunner模块引入问题
这个模块不支持pip直接下载,需要手动找资源放在 E:\python\Lib\site-packages 目录下,然后对HTMLTesrRunner.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))
————————————————
原文链接:https://blog.csdn.net/striver_dl/article/details/105693666

如果HTMLTestRunner()方法不能直接调用,使用HTMLTestRunner.HTMLTestRunner()即可

二 :生成的HTML文件是空白的或者报如下错误

.Traceback (most recent call last):
  File "E:\AutoTest\NewTest\unittest_expand\run_tests.py", line 17, in <module>
    runner.run(suit)
  File "E:\python\lib\site-packages\HTMLTestRunner\HTMLTestRunner.py", line 631, in run
    self.generateReport(test, result)
  File "E:\python\lib\site-packages\HTMLTestRunner\HTMLTestRunner.py", line 691, in generateReport
    self.stream.write(output)
TypeError: a bytes-like object is required, not 'str'

首先,如果没有任何报错但是生成的HTML文件是空的,需要在代码最后加一个

fp.close()

关于第二点错误原因,在笔者的环境是因为这里出了问题(初学在网上看好多人是这么写的,实际不能用)

fp = open(filename, 'wb')

问题出在 ‘wb’ 这个参数上,实际我们写入的是“str”类型的数据,所以不需要加“b”,正确的代码是:

fp = open(filename, 'w')

三:生成报告乱码问题
好了,搞到这一步终于报告生成了,满怀欣喜的打开生成的HTML文件,检验一下成果。乍一看,好,跟网上大家一模一样,再一细瞧,title怎么是乱码的,好家伙!
如图title部分是乱码的
问题还是出在这一块(短短一段代码写出这么多bug我也是人才)

fp = open(filename, 'w')
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title="测试报告",
                                           description="Win 10,Chrome Driver"
                                           )

由于我的代码里title是中文的,又没有考虑到编码问题,乱码是不可避免的,那么就需要小小改动一下

fp = open(filename, 'w',encoding='utf-8')
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title="测试报告",
                                           description="Win 10,Chrome Driver"
                                           )

然后运行,重新生成HTML文件,搞定了!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值