• unittest框架


    unittest框架

    1、写用例:TestCase 类
    2、加载用例:TestSuite 类    TestLoader 类
    3、对比结果(执行结果/期望结果):assert函数
    4、执行并出结果:TextTestRunner 类
    5、报告:HtmlTestReport 类

    1)首先建一个math_method.py文件,用来存在被测试函数

    1 # 被测类函数
    2 class MathMethod():
    3 
    4     def add(self, a, b):
    5         return a + b
    6 
    7     def sub(self, a, b):
    8         return a - b
    View Code

    2)新建一个unittest_case1.py文件,用来存放测试用例代码

     1 # from unittest.case import TestCase  #在文件unittest文件下面case文件中存在TestCase模块
     2 # class TestAdd(TestCase):
     3 
     4 import unittest
     5 from test_unittest.math_method import MathMethod  # 导入被测试类
     6 
     7 
     8 class TestAdd(unittest.TestCase):  # 测试类  专门测试加法类
     9     # 写用例 每一条用例都是一个类函数
    10     # 用例 def test_后缀(self) :用例函数必须test开头
    11 
    12     def setUp(self):  # 测试环境的搭建
    13         print("我要开始测试咯")
    14         self.t = MathMethod()
    15 
    16     def tearDown(self):  # 测试环境的销毁
    17         print("我测试完成咯")
    18 
    19     def test_add_two_zero(self):  # 测试两个零相加的用例
    20         # t = MathMethod()  # 创建实例
    21         # res = t.add(0, 0)
    22 
    23         res = self.t.add(0, 0)
    24         # 断言函数的调用,注意:为啥用self,因为调用父类的方法
    25         self.assertEqual(1, res)
    26         print("测试的结果是:{0}".format(res))
    27 
    28     def test_add_two_positive(self):  # 测试两个整数相加的用例
    29         # t = MathMethod()  # 创建实例
    30         # res = t.add(4, 5)
    31 
    32         res = self.t.add(4, 5)
    33         print("测试的结果是:{0}".format(res))
    34 
    35     def test_add_two_negative(self):  # 测试两个负数相加的用例
    36         # t = MathMethod()  # 创建实例
    37         # res = t.add(-4, -5)
    38 
    39         res = self.t.add(-4, -5)
    40         print("测试的结果是:{0}".format(res))
    41 
    42 
    43 class TestSub(unittest.TestCase):  # 测试类 专门测试减法
    44     # 写用例 每一条用例都是一个类函数
    45     # 用例 def test_后缀(self) :用例函数必须test开头
    46 
    47     def test_sub_two_zero(self):  # 测试两个零相减的用例
    48         t = MathMethod()  # 创建实例
    49         res = t.sub(0, 0)
    50         print("测试的结果是:{0}".format(res))
    51 
    52     def test_sub_two_positive(self):  # 测试两个整数相减的用例
    53         t = MathMethod()  # 创建实例
    54         res = t.sub(4, 5)
    55         print("测试的结果是:{0}".format(res))
    56 
    57     def test_sub_two_negative(self):  # 测试两个负数相减的用例
    58         t = MathMethod()  # 创建实例
    59         res = t.sub(-4, -5)
    60         print("测试的结果是:{0}".format(res))
    61 
    62 
    63 if __name__ == '__main__':
    64     unittest.main()
    View Code

    3)新建一个unittest_suite1.py文件,用来存放加载用例,执行用例,生成报告的代码

     1 import unittest
     2 from project.unittest_case1 import AddTest  # 导入测试加法类
     3 from project.unittest_case1 import SubTest  # 导入测试减法类
     4 from project import unittest_case1  #导入模块
     5 from HTMLTestRunnerNew import HTMLTestRunner
     6 
     7 #--------------------------加载测试用例并执行,最后生成测试报告(txt/html格式)-----------------------------
     8 
     9 ########### 创建实例#########
    10 suite = unittest.TestSuite()
    11 
    12 ##########加载测试用例##########
    13 # 方法一:TestSuite加载测试用例【以实例形式】
    14 suite.addTest(AddTest("test1_1"))
    15 suite.addTest(AddTest("test1_2"))
    16 suite.addTest(AddTest("test1_3"))
    17 suite.addTest(AddTest("test1_4"))
    18 suite.addTest(AddTest("test1_5"))
    19 suite.addTest(AddTest("test1_6"))
    20 
    21 suite.addTest(SubTest("test2_1"))
    22 
    23 
    24 # # 方法二:使用TestLoader加载测试用例【以函数、模块形式】
    25 # loader = unittest.TestLoader()
    26 # suite.addTest(loader.loadTestsFromModule(unittest_case1))
    27 # suite.addTest(loader.loadTestsFromTestCase(SubTest))
    28 # suite.addTest(loader.loadTestsFromTestCase(AddTest))
    29 
    30 
    31 # -----------------------------------TextTestRunner执行测试用例,并生成报告(txt)-------------------------------------------
    32 # with open("test_resul.txt", 'w+',encoding="utf-8") as file:
    33 #     runner = unittest.TextTestRunner(stream=file,
    34 #                                      descriptions='接口测试报告',
    35 #                                      verbosity=2)
    36 #     runner.run(suite)
    37 
    38 #  -----------------------------------TextTestRunner执行测试用例,并生成报告(txt)-------------------------------------------
    39 with open("test_resul.html", 'wb+') as file:
    40     runner = HTMLTestRunner(stream=file,
    41                             verbosity=2,
    42                             title='接口测试报告',
    43                             description=None,
    44                             tester='稳稳的幸福')
    45     runner.run(suite)
    View Code

    备注:

    执行结果,如果鼠标放在某一个测试用例函数后面则只执行这个用例;若放在最后一行测试用例的下面则执行所有测试用例
    执行结果顺序按照函数名ASCII码排序0-9,A-Z, a-z,test_add_two_negative test_add_two_positive test_add_two_zero
    使用main函数则也是执行整个所有用例

  • 相关阅读:
    安装部署Python开发环境
    CentOS系统常见优化
    chm文件打开无法显示
    数据库恢复技术
    视图的认识
    存储过程的认识
    error C2471: 无法更新程序数据库 ,fatal error C1083: 无法打开程序数据库文件
    ubuntu下使用aptget install下载安装文件管理
    转:[译文] 程序员的禅修之路
    数据库的两段锁协议
  • 原文地址:https://www.cnblogs.com/lctest/p/12123646.html
Copyright © 2020-2023  润新知