• unittest测试框架生成可视化测试报告-BeautifulReport


    生成报告的样式:

    在说unittest之前,先说几个概念:

    TestCase 也就是测试用例

    TestSuite 多个测试用例集合在一起,就是TestSuite

    TestLoader是用来加载TestCase到TestSuite中的

    TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

     

    1.单元测试:

      开发自己测自己写的代码;

    2.导入模块unittest:

      import unittest  #导入unittest模块

      from BeautifulReport import BeautifulReport  #导入BeautifulReport 报告模板模块

    3.运行一个简单的unittest:

    主要是体会一下unittest的写法

     1 import unittest   #单元测试模块
     2 
     3 class TestCalc(unittest.TestCase):
     4     def test1(self):    #函数名要以test开头,否则不会被执行
     5         self.assertEqual(1,1)
     6 
     7     def test2(self):
     8         self.assertEqual(1,2)
     9 
    10 unittest.main() #会运行当前python文件里面的所有测试用例

    4.unittest单元测试的基本流程:

      用例集/测试套件:存放测试用例的

      ①.先把所有的测试用例都放到用例集

      ②.运行这些测试用例

      ③.产生报告

     

    suite方式组织测试用例1:

     1 import unittest   #单元测试模块
     2 from BeautifulReport import BeautifulReport as bf  #导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看
     3 
     4 class TestCalc(unittest.TestCase):
     5     def setUp(self):  #每个用例运行之前运行的
     6         print('setup是啥时候运行的')
     7 
     8     def tearDown(self): #每个用例运行之后运行的
     9         print('teardown是啥时候运行的')
    10 
    11     @classmethod
    12     def setUpClass(cls):  #在所有用例执行之前运行的
    13         print('我是setUpclass,我位于所有用例的开始')
    14 
    15     @classmethod
    16     def tearDownClass(cls): #在所有用例都执行完之后运行的
    17         print('我是tearDownClass,我位于多有用例运行的结束')
    18 
    19     def testcc(self):    #函数名要以test开头,否则不会被执行
    20         '''这是第一个测试用例'''       #用例描述,在函数下,用三个单引号里面写用例描述
    21         self.assertEqual(1,1)
    22         print('第一个用例')
    23 
    24     def testaa(self):
    25         '''这个是第二个测试用例'''
    26         self.assertEqual(1,1)
    27         print('第二个用例')
    28 
    29     def testdd(self):
    30         '''用例描述3'''
    31         print('第三个用例')
    32 
    33     def testbb(self):
    34         '''用例描述4'''
    35         print('第四个用例')
    36 
    37 suite = unittest.TestSuite()  #定义一个测试集合
    38 suite.addTest(unittest.makeSuite(TestCalc))  #把写的用例加进来(将TestCalc类)加进来
    39 run = bf(suite) #实例化BeautifulReport模块
    40 run.report(filename='test',description='这个描述参数是必填的')

      

    使用discover方式组织测试用例:

    使用场景:

    运行指定目录下的全部测试用例

    1 import unittest
    2 from BeautifulReport import BeautifulReport    #导入BeautifulReport
    3 
    4 if __name__ == '__main__':
    5     suite_tests = unittest.defaultTestLoader.discover(".",pattern="*tests.py",top_level_dir=None)     #"."表示当前目录,"*tests.py"匹配当前目录下所有tests.py结尾的用例
    6     BeautifulReport(suite_tests).report(filename='百度测试报告', description='搜索测试', log_path='.')    #log_path='.'把report放到当前目录下

     

    运行指定测试类中的case,suite方式组织测试用例: 

    使用场景:

    假如有测试类AB,类中各有测试方法1,2,3

    假如想仅运行测试类A中方法1,测试类B中的方法3,可以使用这种方式组织测试用例

    主要是为了在case量很大时,很方便的调试

     1 import unittest
     2 import os
     3 from BeautifulReport import BeautifulReport as bf
     4 from case.subway.test_subway import Subway
     5 
     6 #仅运行指定的case Subway是类名,test_subway_001是类中的测试方法名
     7 caseList=[Subway("test_subway_001")]
     8 #使用suite组织测试用例
     9 suite = unittest.TestSuite()
    10 suite.addTests(caseList)
    11 #运行并生成测试报告 
    12 run = bf(suite)
    13 run.report(filename="test", description="测试报告")

     

    目录结构:

    一个文件夹下有若干测试类,每个测试类正可能又会有若干个测试用例

     

    代码结构:

     

    谢谢二位大神:

    Python Selenium 之生成BeautifulReport可视化报告

    单元测试unittest及报告生成(两种报告模板)

  • 相关阅读:
    go爬虫
    node简单爬虫request简单运用
    Centos7.4安装Mysql5.6
    HTML本地资源读取!
    node-request模块
    react中使用AntDesign库 --- babel-plugin-import 配置
    Django 模型(数据库)
    TypeScript--安装依赖,vscode配置ts自动转换成js文件
    python爬虫
    nodejs爬虫简单实现
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11308609.html
Copyright © 2020-2023  润新知