Python Unittest - Test Fixtures 測試夾具

一、什麼是測試夾具

  • 定義單個或者多個測試所需的環境準備(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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章