簡體   English   中英

分解出 pytest 夾具的通用設置代碼

[英]Factoring out common setup code for a pytest fixture

我正在用 pytest 編寫一些測試,並且我認為這是一個簡單的問題,但不確定正確的方法。 我有一些這樣的代碼:

@pytest.fixture
def obj1():
    ...setup object 1...
    return obj

@pytest.fixture
def obj2():
    ....setup object 2 ...
    return obj

def test_val_obj_1(obj1):
    ...some common boilerplate...
    output = some_function(obj1)
    assert output['important_key'] == some_values

def test_val_obj_2(obj2):
    ...some common boilerplate...
    output = some_function(obj2)
    assert output['important_key'] == some_values

對於我的兩個測試, ...some common boilerplate...和 some_function() 是相同的,所以我希望在其他地方有這個。 我是否只需定義一個正常的 function 來執行此操作? 還是我需要對固定裝置做一些特定的事情? 我還沒有完全了解文檔中的“參數化”固定裝置,也無法弄清楚這是我要問的還是不同的用例。

parameterized可能會對您有所幫助,但它可能取決於樣板中發生的事情

@pytest.mark.parametrize("obj,some_value", [(obj1, some_value), (obj2, some_value)])
def test_val_obj(obj, some_value):
    ...some common boilerplate...
    output = some_function(obj)
    assert output['important_key'] == some_value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM