Python Unittest - Test Fixtures 測試夾具
阿新 • • 發佈:2018-12-10
一、什麼是測試夾具
定義單個或者多個測試所需的環境準備(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