通过pip安装 HTMLTestRunne失败。则需要通过手动下载。
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
下载后,把HTMLTestRunner.py 文件复制到Python 安装路径下的lib文件夹中即可。
在python3中用HTMLTestRunner.py报importError“:No module named 'StringIO'解决办法
原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法。
修改内容:
第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:
第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
第766行,将uo = o.decode('latin-1')修改成uo = e
第775行,将ue = e.decode('latin-1')修改成ue = e
*****************************************************************************************************************************************************
修改完HTMLTestRunner.py文件后,将此文件,放到pthon安装位置的lib目录 下,在使用的时候,import导入就可以使用
下边是使用示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/4/1 17:12
# @File : run_class.py
import HTMLTestRunner
import unittest
# from test_class import TestMathMethod
from unittest_study import test_class
suite = unittest.TestSuite()#存储用例
# 方法一:只执行一条用例,两个正数相加
# suite.addTest
# suite.addTest(TestMathMethod('test_add_two_positive'))
# 方法二:TestLoader
# 创建一个加载器
loader = unittest.TestLoader()
# 1)从测试类中去寻找用例,然后加载到suite中
# suite.addTest(loader.loadTestsFromTestCase(TestMathMethod))
# 2)从模块里去找用例,然后将模块下的用例添加至suite中
# 会将test_class中的两个类都执行
suite.addTest(loader.loadTestsFromModule(test_class))
# 执行
# 不带参数的时候,生成的测试报告会直接打印在控件台上
# runner = unittest.TextTestRunner()
# 带参数,会在生成指定的文件,并将报告输出到此文件中,有中文时,要设置encoding='UTF-8'
# file = open("test.txt", "w+", encoding='UTF-8')
# runner = unittest.TextTestRunner(stream=file, verbosity=2)
# runner.run(suite)
# file.close()
# # 上下文管理器,会在执行结束后,自己去close文件,不需要手动去处理
# with open("test.txt", "w+", encoding='UTF-8') as file:
# runner = unittest.TextTestRunner(stream=file, verbosity=2)
# runner.run(suite)
# print(file.closed)
import HTMLTestRunner
# 上下文管理器,会在执行结束后,自己去close文件,不需要手动去处理
with open("test_report.html", "wb") as file:
# runner = unittest.TextTestRunner(stream=file, verbosity=2)
runner = HTMLTestRunner.HTMLTestRunner(stream=file,
verbosity=2,
title='接口自动化测试报告,测试结果如下:',
description="测试一下描述信")
runner.run(suite)