python @pytest.fixture示例及用法

乐乐乐乐乐乐樂發表於2024-03-18

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_sumtest_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 功能非常強大,還可以與其他外掛和鉤子函式結合使用,實現更復雜的設定和清理邏輯。

相關文章