python @pytest.fixture示例及用法
@pytest.fixture
是 pytest 測試框架中的一個非常有用的功能,它允許你定義可以在多個測試用例之間共享的設定和清理程式碼。透過使用 fixture,你可以減少重複的程式碼,並使得測試用例更加清晰和模組化。
下面是一個簡單的示例,展示瞭如何使用 @pytest.fixture
:
import pytest
# 定義一個 fixture
@pytest.fixture
def setup_data():
# 這裡是設定程式碼,例如建立一些測試資料
data = [1, 2, 3, 4, 5]
return data
# 使用 fixture 的測試用例
def test_sum(setup_data):
# setup_data 是從 fixture 中獲取的
assert sum(setup_data) == 15
def test_length(setup_data):
# 同樣,這裡也使用了 setup_data fixture
assert len(setup_data) == 5
在這個例子中,我們定義了一個名為 setup_data
的 fixture,它返回一個包含一些數字的列表。然後,我們在兩個測試用例 test_sum
和 test_length
中使用了這個 fixture。pytest 會自動呼叫 fixture 函式,並將返回的值傳遞給使用它的測試用例。
你還可以給 fixture 新增引數,使得它可以更加靈活:
@pytest.fixture(params=[1, 2, 3])
def number(request):
return request.param
def test_number(number):
assert number > 0
在這個例子中,number
fixture 使用 params
引數來指定多個可能的返回值。pytest 會為每個引數值執行一次 test_number
測試用例。
此外,你還可以使用 scope
引數來指定 fixture 的作用域。例如,scope="module"
意味著 fixture 將在整個模組的所有測試用例之間共享。預設值是 "function"
,意味著 fixture 將在每個測試用例之間獨立執行。
這只是 @pytest.fixture
的基本用法。pytest 的 fixture 功能非常強大,還可以與其他外掛和鉤子函式結合使用,實現更復雜的設定和清理邏輯。