• unittest生成测试报告


    此版本的运行和安装环境是在linux下,使用vscode配置的

    首先准备好测试代码

    以下是简单的一份

     1 import unittest
     2 import HTMLTestRunner
     3 
     4 
     5 class TestCalc(unittest.TestCase):
     6     def testcc(self):
     7         '''this is first case'''
     8         self.assertEqual(1, 1)
     9         print('first case')
    10 
    11     def testaa(self):
    12         '''this is second case'''
    13         self.assertEqual(2, 2)
    14         print('second case')
    15 
    16     def testdd(self):
    17         '''this is third case'''
    18         print('third case')
    19 
    20     def testbb(self):
    21         '''this is forth case'''
    22         print('forth case')
    23 
    24 
    25 if __name__ == "__main__":
    26     # HTMLTestRunner.main()
    27     suite1 = unittest.TestSuite()
    28     suite1.addTest(TestCalc("testaa"))
    29     suite1.addTest(TestCalc("testcc"))
    30 
    31     with open("SenderResult.txt", "a") as f:
    32         TXT_runner = unittest.TextTestRunner(stream=f, verbosity=2)
    33         TXT_runner.run(suite1)
    34 
    35     suite2 = unittest.TestSuite()
    36     suite2.addTest(TestCalc("testaa"))
    37     suite2.addTest(TestCalc("testcc"))
    38     f = open('Easy_test.html', 'wb')
    39     runner = HTMLTestRunner.HTMLTestRunner(
    40         stream=f,
    41         title='unittest case title',
    42         description='this is case description')
    43     runner.run(suite2)
    44     f.close()

    模块 是使用了pip3 install HTMLTestRunner之后自动安装的,然后去python的安装目录lib,查看是否有HTMLTestRunner.py文件,没有的话要下载一份放在lib目录下

    然后要把HTMLTestRunner.py这个文件的一些内容修改一下才可以运行不报错

     具体的修改内容如下:

    第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:

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

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

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

    好看一些的报告资源:

    https://pypi.org/project/html-testRunner/

    或直接用pip安装:pip3 install html-testRunner

    注意:

    每一个class类都会生成一份报告,所以运行一次py文件,有几个测试类就会生成几份报告

    把几份报告合并到一起的办法:

    cat A.html B.html >> NEW.html

    这种合并的方式不止适用于html,text文件也适用(Windows上把cat换成copy即可)

    报错:

    1.报错仍找不到模块HTMLTestRunner

    我的解决方法是暂且把HTMLTestRunner.py这个文件放到脚本的同级目录中去直接调用

    2.文件运行成功但并没有生成html的报告

    是由于(在linux上的vscode中编辑的)没有把报告生成的路径指明,用绝对路径指明报告位置后就成功生成了html报告

  • 相关阅读:
    JS 知识点补充
    JS 数据之间类型的转化
    JS 数据的类型
    数据结构--数组、单链表和双链表介绍 以及 双向链表
    数据结构--队列
    数据结构--栈
    24. 两两交换链表中的节点
    23. 合并K个排序链表
    22. 括号生成
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/RuiRuia/p/13912898.html
Copyright © 2020-2023  润新知