美文网首页
unittest的介绍和使用

unittest的介绍和使用

作者: Chaweys | 来源:发表于2021-01-23 09:33 被阅读0次

    什么是unitest?
    unitest是Python自带测试库,是单元测试框架,且提供了丰富的断言方法
    unittest核心:TestFixture、TestCase、TestSuite、TestRunner
    
    注:
    1、定义测试用例,必须以"test"开头命名方法
    2、unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们
    3、setUp()和tearDown()每个用例例执行前后都会执行初始化条件和结束条件
    
    
    # -*- coding:utf-8 -*-
    import unittest
    
    class UserCase(unittest.TestCase):
        def setUp(self):
            print("set Up 开始执行")
    
        def tearDown(self):
            print("tear Down 执行结束")
    
        def testcase1(self):
            print("case1")
    
        def testcase2(self):
            print("case2")
            self.assertEqual(1,1)
    
        def testcase3(self):
            print("case3")
    
    if __name__=="__main__":
        unittest.main()
    
    
    结果:
    set Up 开始执行
    case1
    tear Down 执行结束
    set Up 开始执行
    case2
    tear Down 执行结束
    set Up 开始执行
    case3
    tear Down 执行结束
    ...                      #每个点代表一个用例方法执行成功,如果有F代表一个用例执方法行失败
    ----------------------------------------------------------------------
    Ran 3 tests in 0.001s
    
    OK
    

    unittest的进阶使用

    注:
    setUp()和tearDown()每个用例执行前后都会执行初始化条件和结束条件。
    setUpClass()和tearDownClass()是执行所有用例时只用执行一次初始化条件和结束条件。
    
    # -*- coding:utf-8 -*-
    import unittest
    
    class UserCase(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            print("set Up 开始执行")
        @classmethod
        def tearDownClass(cls):
            print("tear Down 执行结束")
    
        def testcase1(self):
            print("case1")
    
        def testcase2(self):
            print("case2")
            self.assertEqual(1,1)
    
        @unittest.skip("跳过该用例")
        def testcase3(self):
            print("case3")
    
    if __name__=="__main__":
        unittest.main(verbosity=1)
    """
    结果:
    verbosity=1 代表输出用例执行的结果日志级别,默认是1
    
    set Up 开始执行
    case1
    case2
    case3
    tear Down 执行结束
    ...
    ----------------------------------------------------------------------
    Ran 3 tests in 0.001s
    
    OK
    
    
    
    verbosity=0的结果:
    set Up 开始执行
    case1
    case2
    case3
    tear Down 执行结束
    ----------------------------------------------------------------------
    Ran 3 tests in 0.000s
    
    OK
    
    
    
    verbosity=2的结果:
    set Up 开始执行
    case1
    case2
    case3
    tear Down 执行结束
    testcase1 (__main__.UserCase) ... ok
    testcase2 (__main__.UserCase) ... ok
    testcase3 (__main__.UserCase) ... ok
    
    ----------------------------------------------------------------------
    Ran 3 tests in 0.000s
    
    OK
    
    
    
    加上跳过用例执行注解:@unittest.skip("跳过该用例")
    set Up 开始执行
    case1
    case2
    tear Down 执行结束
    testcase1 (__main__.UserCase) ... ok
    testcase2 (__main__.UserCase) ... ok
    testcase3 (__main__.UserCase) ... skipped '跳过该用例'
    
    ----------------------------------------------------------------------
    Ran 3 tests in 0.000s
    
    OK (skipped=1)
    
    """
    

    ddt加载测试用例数据

    import unittest
    import ddt
    
    datas=[{"a":1,"b":2,"c":3}]
    
    @ddt.ddt
    class DDTTest(unittest.TestCase):
        @ddt.data(*datas)  #注解:对datas参数进行拆分
        def test1(self,d):
            print("参数时:{0}".format(d))
    
    if __name__ == '__main__':
        unittest.main()
    
    结果:
    .
    参数时:{'a': 1, 'b': 2, 'c': 3}
    ----------------------------------------------------------------------
    Ran 1 test in 0.000s
    
    OK
    

    相关文章

      网友评论

          本文标题:unittest的介绍和使用

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