zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    R语言入门心得(1) -- 下载与安装
    ASP.NET中ListView用DataPager分页
    .Net平台下的扩展方法
    疑问句
    时态
    webapi put 404
    记一次阿里云ECS服务器图片资源迁移至 阿里云 oss
    javascript
    阿里云 oss 上传文件,js直传,.net 签名,回调
    redis 持久化共享 Session
  • 原文地址:https://www.cnblogs.com/mrgavin/p/8489252.html
Copyright © 2011-2022 走看看