解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
1、HTMLTestRunner介绍
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 (该文件中不需要再次进行修改,因为我已经将绊子给移开了,下载调用就好了)
2、如何使用HTMLTestRunner?
如果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文件啊,那么这个测试报告文件去哪里了呢?
3、解决pycharm + HTMLTestRunner 不能够生成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)选择步骤三种新增的环境,运行脚本,即可生成报告
解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题的更多相关文章
- 在Pycharm中导入第三方模块库(诸如:matplotlib、numpy等)
在Pycharm中导入第三方模块库 一.打开pycharm: 二.点击菜单上的“file” -> “setting”: 三.步骤二完成后出现界面如下所示.选中你的项目(比如thisyan Pro ...
- PyCharm中导入MySQLDB模块小结
安装完MySQL-python驱动,在PyCharm中导入MySQLDB模块一直不成功 Settings里面也没有MySQLdb 百般尝试找解决办法,一直搞不定,最后抱着试一试的心态尝试了一个办法: ...
- IDEA中导入Maven模块
IDEA中导入Maven模块方式有二种: 1)批量添加,不可添加文件夹 2)单个添加,可添加任意文件
- unittest框架中读取有特殊符号的配置文件内容的方法-configparser的RawConfigParser类应用
在搭建Unittest框架中,出现了一个问题,配置文件.ini中,出现了特殊字符如何处理? 通过 1.configparser的第三方库对应的ConfigParser类,无法完成对特殊字符的读取: # ...
- unittest框架下的HTMLTestRunner报告模块使用及优化
引言 在做接口自动化测试的时候,使用python单元测试框架unittest下HTMLTestRunner报告模板,可以很好的展示我们测试结果的数据. 官方的标准版模板地址:http://tungwa ...
- Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...
- Python 中 使用 HTMLTestRunner 模块生成测试报告
使用 HTMLTestRunner 模块可以生成测试报告,但是系统自带的报告不详细,不好看,所以找了一份详细的报告 HTMLTestRunner 模板,直接导入就能使用 两种方法生成HTML报告,都 ...
- 5.pycharm中导入第三方模块的方法
最近刚入门学习python,网上查找了一些资料,发现python编程用的软件pycharm还是比较多的,于是就跟随大众,学习使用pycharm,在学习的过程中,想要导入第三方模块pyperclip,但 ...
- IDEA从SVN中导入多模块项目
idea多模块项目的导入 在IntelliJ IDEA中间新建一个空项目,名字可以是svn要检索的的项目名称,原则是开心就好: 现在,我们将我们在svn中的多模块的项目down下来 选中顶部的导航中的 ...
随机推荐
- Android回到页面并刷新数据
通过对Android Activity的生命周期的了解,需要在后退页面重写onResume()的方法. 建立自己更新数据的函数,并在onCreate()方法中调用. @Override protect ...
- oracle数据库存储过程中的select语句的位置
导读:在oracle数据库存储过程中如果用了select语句,要么使用"select into 变量"语句要么使用游标,oracle不支持单独的select语句. 先看下这个存储过 ...
- 前端加密办法之混淆js加密
每个页面都是有数据和页面结构以及样式组成,对于单页面的作者来说这中分离的感觉会明显一点,那当我们通过ajax请求拿到数据之后我们一般就是把数据渲染到页面,但是数据接口又不想那么明显是一个json字符串 ...
- MFC软件国际化的几个问题及其解决方案
作者:马健 邮箱:stronghorse_mj@hotmail.com主页:https://www.cnblogs.com/stronghorse/ 以前我以为PDG相关软件只会在国内流行,所以发行简 ...
- 【编译原理】自底向上分析方法——LR文法分析方法的总结
LR(0).SLR(1).LR(1).LALR(1) de 若干方面的区别 目录 推导过程 分析能力 本质区别 文法对比 可以适当利用物理意义对二义性文法进行冲突处理 推导过程 LR(0)的基础上才有 ...
- 使用pyttsx3实现简单tts服务
操作系统:Windows 10_x64 python版本:Python 3.9.2_x64 pyttsx3版本: 2.90 pyttsx3是一个tts引擎包装器,可对接SAPI5.NSSS(NSS ...
- MySQL性能优化的5个维度
面试官如果问你:你会从哪些维度进行MySQL性能优化?你会怎么回答? 所谓的性能优化,一般针对的是MySQL查询的优化.既然是优化查询,我们自然要先知道查询操作要经过哪些环节,然后思考可以在哪些环节进 ...
- python---十进制转换成n进制
""" 十进制转换成n进制 例子: 100转换成8进制-----144 256除8 商32 余0 32除8 商4 余0 4除8 商0 余4 每次结果的余数进栈, 最后出栈 ...
- Java实现单链表的反转
思路1:初始化一个新的头节点reverseHead,然后遍历旧链表,利用头插法向reverseHead进行插入 思路2: 1.反转相当于数据的更换(1和n,2和n-1,3和n-2)n为链表的长度 2. ...
- python版本共存与语法的注释
python的多种版本共存 首先还是先下载python解释器除最高版本的另外两个版本 个人推荐的是 3.6.8和2.7.14 首先我电脑是win7系统 在计算机属性右键点开高级设置点击环境变量 将下载 ...