zoukankan      html  css  js  c++  java
  • Python Unittest

    一、什么是测试夹具

    • 定义单个或者多个测试所需的环境准备(setUp),以及环境清理(tearDown)。

    • 例:连接数据库,或者创建Selenium WebDriver driver实例

    二、测试夹具有什么作用。

    • 为每一个测试用例提供用例测试环境准备和清理,为每一个用例提供干净的测试环境。
    • 为每一组测试提供用例测试环境准备和清理,为每一组测试提供干净的测试环境。

    三、Unittest 三种测试夹具的使用例子。

    1、 Unittest 测试夹具 setUp/tearDown

    • setUp 每个用例运行前执行
    • tearDown 每个用例运行后执行

    test_example_one.py

    # encoding:utf8
    
    
    import unittest
    
    
    class TestCaseOne(unittest.TestCase):
    
        def setUp(self):
            print('---每个用例运行前执行---')
    
        def tearDown(self):
            print('---每个用例运行结束后执行---')
    
        def test_case_one(self):
            print('--- 测试用例 1 ---')
    
        def test_case_two(self):
            print('--- 测试用例 2---')
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    
    

    运行结果

    test_case_one (__main__.TestCaseOne) ... 
    ---每个用例运行前执行---
    --- 测试用例 1 ---
    ---每个用例运行结束后执行---
    ok
    
    test_case_two (__main__.TestCaseOne) ... 
    ---每个用例运行前执行---
    --- 测试用例 2---
    ---每个用例运行结束后执行---
    ok
    

    2、 Unittest 测试夹具setUpClass/tearDownClass

    • setUpClass 每个测试类里,执行一次,在所有用例运行前执行
    • tearDownClass 每个测试类里,执行一次,在所有用例运行后执行

    test_example_two.py

    # encoding:utf8
    
    import unittest
    
    class TestCaseOne(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            print('---每个测试类里,执行一次,在所有用例运行前执行---')
    
        @classmethod
        def tearDownClass(cls):
            print('---每个测试类里,执行一次,在所有用例运行后执行---')
    
        def test_case_one(self):
            print('--- 测试用例 1 ---')
    
        def test_case_two(self):
            print('--- 测试用例 2---')
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

    运行结果

    ---每个测试类里,执行一次,在所有用例运行前执行---
    test_case_one (__main__.TestCaseOne) ... --- 测试用例 1 ---
    ok
    test_case_two (__main__.TestCaseOne) ... --- 测试用例 2---
    ok
    ---每个测试类里,执行一次,在所有用例运行后执---
    

    3、 Unittest 测试夹具setUpModule/tearDownModule

    • setUpModule 每个模块里,执行一次,在所有用例运行前执行
    • tearDownModule 每个模块里,执行一次,在所有用例运行后执行

    test_example_three.py

    # encoding:utf8
    
    import unittest
    
    def setUpModule():
        print('--- 模块运行开始时 ,运行一次 ---')
    
    def tearDownModule():
        print('--- 模块运行结束时 ,运行一次 ---')
    
    class TestCaseOne(unittest.TestCase):
    
        def test_case_one(self):
            print('--- 测试用例 1 ---')
    
        def test_case_two(self):
            print('--- 测试用例 2---')
    
    class TestCaseTwo(unittest.TestCase):
    
        def test_case_three(self):
            print('--- 测试用例 3 ---')
    
        def test_case_four(self):
            print('--- 测试用例 4---')
    
    
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    
    

    运行结果

    --- 模块运行开始时 ,运行一次 ---
    test_case_one (__main__.TestCaseOne) ... --- 测试用例 1 ---
    ok
    test_case_two (__main__.TestCaseOne) ... --- 测试用例 2---
    ok
    test_case_four (__main__.TestCaseTwo) ... --- 测试用例 4---
    ok
    test_case_three (__main__.TestCaseTwo) ... --- 测试用例 3 ---
    ok
    --- 模块运行结束时 ,运行一次 ---
    

    ### Github 源码地址: [https://github.com/SEtester/how_to_run_test_case](https://github.com/SEtester/how_to_run_test_case)


  • 相关阅读:
    【POJ】2778 DNA Sequence(AC自动机+矩阵快速幂)
    【HDU】4352 XHXJ's LIS(数位dp+状压)
    【BZOJ】1756: Vijos1083 小白逛公园(线段树)
    【POJ】1062 昂贵的聘礼 (最短路)
    【Codeforces】Codeforces Round #491 (Div. 2) (Contest 991)
    【Codeforces】Codeforces Round #492 (Div. 2) (Contest 996)
    【Codeforces】Educational Codeforces Round 46(Contest 1000)
    【POJ】1935 Journey(树形dp)
    【UVALive】4094 WonderTeam(神结论)
    【POJ】1185 炮兵阵地(状压dp)
  • 原文地址:https://www.cnblogs.com/snailrunning/p/10094546.html
Copyright © 2011-2022 走看看