• Python3中使用HTMLTestRunner报No module named 'StringIO'解决方法


    今天在学习使用HTMLTestRunner生成测试报告时遇到一个报错,如图所示:

    网上搜索了下“No module named 'StringIO'”解决方法,原来我用的是Python 3.X版本,而下载的HTMLTestRunner适用于Python2.X(下载链接:http://tungwaiyip.info/software/HTMLTestRunner.html)

    于是这里再做次“搬运工”,了解下如何在Python3中使用HTMLTestRunner报No module named 'StringIO'解决方法。

    修改HTMLTestRunner.py文件:

    (1)第94行,将import StringIO修改成import io

    (2)第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

    (3)第631行,将print >>sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime))

    (4)第642行,将if not rmap.has_key(cls): 修改成if not cls in rmap:

     

    (5)第766行,将uo = o.decode('latin-1')修改成uo = e

    (6)第772行,将ue = e.decode('latin-1')修改成ue = e

     

    HTMLTestRunner修改后,重新运行脚本发现一切正常并在相应路径下生成了测试报告,如图所示:

    执行脚本代码参考:

     1 # coding=utf-8
     2 
     3 import unittest
     4 import os
     5 import HTMLTestRunner
     6 
     7 
     8 # 用例路径
     9 case_path = os.path.join(os.getcwd(), "case")
    10 # 报告存放路径
    11 report_path = os.path.join(os.getcwd(), "report")
    12 
    13 def all_case():
    14     discover = unittest.defaultTestLoader.discover(case_path,
    15                                                     pattern="test*.py",
    16                                                     top_level_dir=None)
    17     print(discover)
    18     return discover
    19 
    20 if __name__ == '__main__':
    21     # 返回实例
    22     # runner = unittest.TextTestRunner()
    23     # runner.run(all_case())
    24 
    25     # html报告文件路径
    26     report_abspath = os.path.join(report_path, 'result.html')
    27     fp = open(report_abspath, "wb")
    28     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
    29                                            title=u'自动化测试报告,测试结果如下: ',
    30                                            description=u'用例执行情况: ')
    31 
    32     # 调用add_case函数返回值
    33     runner.run(all_case())
    34     fp.close()
  • 相关阅读:
    中文字符串怎么按拼音比较大小(转)
    C语言的面向对象技术(转)
    学校网又不行了哇。人人也上不了了。
    POJ2255Tree Recovery
    myeclipse无法编译java源文件(转)
    SQL语句中JOIN的用法(转)
    POJ3094Quicksum
    ssh_exchange_identification: Connection closed by remote host 问题的解决 (转)
    56视频网除了广告都看不了了
    java实现微信扫一扫详解
  • 原文地址:https://www.cnblogs.com/mrgavin/p/8489252.html
Copyright © 2020-2023  润新知