解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
阅读原文时间:2023年07月08日阅读:1

HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner。它是生成一个HTML报告,以一目了然的网页形式展现出来。如下图:

最简单的方法是调用它的主方法。如:

当然调用的前提是我们首先需要下载 htmlTestRunner.py文件,该文件可以作为我们的模块被调用,有两种方式方法可进行操作第一种是直接将网上下载的文件进行放入pycharm的Lib\site-packages目录下可参照网络教程:https://www.cnblogs.com/cheng10/p/10438156.html,当然还有第二种方式方法,同样我也更推荐大家进行使用第二种,因为在我们进行自动化是,我们可能会调用很多第三方模块,这时我们只需要将我们可能会用到的模块放入到我们创建的python package文件包中即可,同时模块较多时也能更加规范管理,同样我直接将文件放入到网盘当中,地址如下:链接:https://pan.baidu.com/s/1Gv5T0pWhKgaWjjbdZmiFCA       提取码:ganf   (该文件中不需要再次进行修改,因为我已经将绊子给移开了,下载调用就好了)

如果1没有问题,那么我们可以开试牛刀了,像我上图一样导入模块没有报错,就可以往下继续了

unittest框架上一章节有详细介绍与说明不懂的可以去翻阅上一章,将下面代码拷贝进行进行运行,

import unittest
import HTMLTestRunner
class testadd(unittest.TestCase):
def setUp(self):
pass
def test_add1(self):
self.assertEqual(2 + 3 + 10,15)
def test_add2(self):
self.assertEqual(10 + 150,160)
def test_add3(self):
#一处出错,查看测试结果
self.assertEqual(2 * 5 * 7, 40)
def tearDown(self):
pass
def suite():
suite = unittest.TestSuite()
suite.addTest(testadd("test_add1"))
suite.addTest(testadd("test_add2"))
suite.addTest(testadd("test_add3"))
return suite
if __name__=="__main__":
# 存放路径在E盘目录下

report_path = f"./report_{strftime('%Y%m%d%H%M%S')}.html"
with open(report_path, "wb") as gfd:
runner = HTMLTestRunner(
stream=gfd,
title="我是自动化测试标题",
description="我是自动化测试描述"
)
runner.run(suite)

fp.close()

运行后我们可查看运行结果,我们会看到运行成,但是为什么在当前未生成html文件啊,那么这个测试报告文件去哪里了呢?

网上办法都试了一遍,但是从根本原因来说是因为:pycharm 在运行测试用例的时候,默认是以unittest框架来运行的,所以不能够生成测试报告。

参考文章:https://www.cnblogs.com/santiandayu/p/10004179.html

3.1、如何判断是否以unittest框架运行

只要运行环境是unittest in …的,就都是以unittest框架运行的

3.2、解决方案

只要不以unittest框架方式运行就可解决不能生成报告的问题。可自己新增一个不以unittest框架方式运行的环境。
1)如下点击edit configurations–>选中python–>点击+
2)点击python
3)填写环境名称和脚本路径
4)选择步骤三种新增的环境,运行脚本,即可生成报告

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章