美文网首页
python:unittest自动生成测试报告

python:unittest自动生成测试报告

作者: rr1990 | 来源:发表于2019-03-03 22:21 被阅读0次

    一、使用unittest自带的测试报告

    使用unittest执行完测试用例后,默认的测试结果是输出在屏幕上,并未将测试结果输出到文件中,这样容易造成报告无保存记录;
    unittest自动的TextTestRunner可以报告以文本形式输出到文件中,只需将参数stream赋值即可;

    import unittest
    
    if __name__ == "__main__":
        # 测试用例保存的目录
        case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
        # 加载测试用例
        discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
        # 运行测试用例同时保存测试报告
        test_report_path = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases\report.txt"
        with open(test_report_path, "a") as report_file:
            runner = unittest.TextTestRunner(stream=report_file, verbosity=2)
            runner.run(discover)
    
    """文本中显示的测试结果如下:
    test_case1 (test_case1.TestCase1) ... ok
    test_case2 (test_case2.TestCase1) ... ok
    
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    """
    

    txt文件显示的测试报告不直观,使其他人查看起来繁琐复杂,故一般使用第三方HTMLTestRunner模块来保存测试报告

    二、HTMLTestRunner模块介绍

    1. 导入HTMLTestRunner模块
      不能通过pip安装的方式导入,需要网上下载HTMLTestRunner.py,下载后将其放至python安装目录下的Lib下即可直接使用;
      但网上“http://tungwaiyip.info/software/HTMLTestRunner.html”不兼容python3,故可在网上直接搜索支持python3的版本,或是直接做以下修改:
    第94行,将import StringIO修改成import io
    第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()
    第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))
    第642行,将if not rmap.has_key(cls):修改成if notcls in rmap:
    第766行,将uo = o.decode(‘latin-1‘)修改成uo = e
    第775行,将ue = e.decode(‘latin-1‘)修改成ue = e
    
    1. 使用方法
    • import HTMLTestRunner:导入HTMLTestRunner
    • HTMLTestRunner.HTMLTestRunner(stream=sys.stdout, verbosity=1, title=None, description=None)
      stream:输出报告的地址;
      verbosity:报告内容的详细程度,2表示很详细;
      title:报告的标题;
      description:报告的详细描述;
    import unittest
    import HTMLTestRunner
    
    if __name__ == "__main__":
        # 测试用例保存的目录
        case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
        # 加载测试用例
        discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
        # 运行测试用例同时保存测试报告
        test_report_path = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases\report.html"
        with open(test_report_path, "wb") as report_file:
            runner = HTMLTestRunner.HTMLTestRunner(stream=report_file, title="自动化测试报告", description="XX应用功能测试")
            runner.run(discover)
    

    相关文章

      网友评论

          本文标题:python:unittest自动生成测试报告

          本文链接:https://www.haomeiwen.com/subject/sfxvuqtx.html