美文网首页
unittest框架(一)

unittest框架(一)

作者: 在下YM | 来源:发表于2021-07-28 16:34 被阅读0次

    什么是unittest框架?

    • unittest框架是专门用来进行执行代码测试的框架;
    • unittest是Python自带的单元测试包,被各种框架引用,比如django;
    • unittest很多用法和django自带的单元测试差不多,因为Django的TestCase继承了Python的unittest.TestCase

    为什么使用unittest框架?

    1.能够组织多个用例去执行
    2.提供丰富的断言方法
    3.提供丰富的日志与测试结果

    unittest核心要素

    架构图

    1,TestCase

    说明:一个TestCase就是一条测试用例,就是一个完整的测试流程。

    1.新建类继承自 unittest.TestCase
    2.测试的方法以 test 开头

    import unittest
    
    class MyTest(unittest.TestCase):
        def test_xxx(self):
            pass
    

    2, TestSuite

    说明:测试套件是把多条测试用例集合在一起,就是一个TestSuite;

    1.实例化 suite 对象 suite = unittest.TestSuite()
    2.将测试用例添加到 suite 中 suite.addTest(MyTest('test_xxx'))

    import unittest
    
    # 实例化 TestSuite
    suite = unittest.TestSuite()
    
    # addTest 可以接受:可调用对象、TestCase对象、TestSuite对象
    suite.addTest(MyTest('test_xxx'))
    

    3,TextTestRunner

    说明:测试执行是用来执行测试用例套件

    1.实例化 runner 对象 runner = unittest.TextTestRunner()
    2.执行测试套件 runner.run(suite)

    import unittest
    
    suite = unittest.TestSuite()
    suite.addTest(MyTest('test_xxx'))
    
    # 实例化 runner 对象
    runner = unittest.TextTestRunner()
    
    # 执行测试套件
    runner.run(suite)
    

    案例

    from unittest import TestCase
    from unittest import TestCase
    from unittest import TestSuite, TextTestRunner
    
    
    class TestCase01(TestCase):
        def test_01(self):
            print("01 执行")
    
        def test_02(self):
            print("02 执行")
    
        def test_03(self):
            print("03 执行")
    
    
    if __name__ == '__main__':
        suite = TestSuite()
        # 添加要执行的测试用例
        suite.addTest(TestCase01('test_01'))
        suite.addTest(TestCase01('test_02'))
        suite.addTest(TestCase01('test_03'))
    
        # 创建runner
        runner = TextTestRunner()
        runner.run(suite)
    

    运行结果如下:

    $ python test_1_case.py 
    01 执行
    .02 执行
    .03 执行
    .
    ----------------------------------------------------------------------
    Ran 3 tests in 0.000s
    
    OK
    

    4,Fixture

    说明:是一个概述,对一个测试用例环境的搭建和销毁就是一个Fixture;
    包含setup 和 teardown

    import unittest
    
    
    class TestCase01(unittest.TestCase):
        def setUp(self):
            print('setUp')
    
        def tearDown(self):
            print('tearDown')
    
        def test_01(self):
            print("test_2 01 执行")
    
        def test_02(self):
            print("test_2 02 执行")
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        # 添加要执行的测试用例
        suite.addTest(TestCase01("test_01"))
        suite.addTest(TestCase01("test_02"))
    
        # 创建runner
        runner = unittest.TextTestRunner()
        runner.run(suite)
    

    运行结果如下:

    $ python test_2_fixture.py 
    setUp
    test_2 01 执行
    tearDown
    .setUp
    test_2 02 执行
    tearDown
    .
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    

    5,defaultTestLoader

    说明: unittest.defaultTestLoader.discover 方法可以自动把指定目录下测试用例自动添加到测试套件中,避免手动一个个的添加测试用例。这个方法返回的就是 suite 对象。

    5.1.指定要搜索的目录
    5.2.调用 discover 方法生成 suite 对象

    import unittest
    
    if __name__ == '__main__':
        # 参数1:指定搜索的路径
        # 参数2:指定匹配文件,默认为'test*.py'
        suite = unittest.defaultTestLoader.discover('./', 'test_2_fixture.py')
    
        runner = unittest.TextTestRunner()
    
        runner.run(suite)
    

    相关文章

      网友评论

          本文标题:unittest框架(一)

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