2016-04-14 4 views
0

pytestフィクスチャの出力をパラメータ化したいと思います。pytestフィクスチャのパラメータ出力

# contents of test_param.py 
import pytest 

@pytest.fixture(params=[1,2]) 
def fixture_1(request): 
    return request.param 

@pytest.fixture 
def fixture_2(fixture_1): 
    for num in range(5): # the output here should be parametrized 
     return '%d_%s' % (fixture_1, num) # but only returns first iteration 

def test_params(fixture_2): 
    print (fixture_2) 
    assert isinstance(fixture_2, str) 

その後、私は次のことを実行すると::

のみフィクスチャ2からの最初の反復が私にはどうすればよいの固定具1にそれぞれのparamのために渡される
py.test test_param.py 

たとえば、のは、私は2つの固定具を持っているとしましょうfixture_2の出力をパラメータ化して、forループの各反復がtest_params関数に渡されるようにします。

編集:実際の問題では、2番目のパラメータの出力が最初のフィクスチャからの入力に依存するため、2番目のフィクスチャを最初のフィクスチャと同じ方法でパラメータ化できないとします。

答えて

0

returnは、フィクスチャ関数から戻るものです。

第1のフィクスチャと同じように、第2のフィクスチャをパラメータ化しないのはなぜですか?

# contents of test_param.py 
import pytest 

@pytest.fixture(params=[1,2]) 
def fixture_1(request): 
    return request.param 

@pytest.fixture(params=list(range(5))) 
def fixture_2(fixture_1, request): 
    return '%d_%s' % (fixture_1, request.param) 

def test_params(fixture_2): 
    print (fixture_2) 
    assert isinstance(fixture_2, str) 
+0

この例では動作しますが、2番目の出力が最初の入力からの入力に依存する場合はどうなりますか?たとえば、私が取り組んでいるテストでは、最初のフィクスチャはディレクトリを返し、2番目のフィクスチャはディレクトリのファイルのサブセットを返します。 – derchambers

+0

py.testは現在依存パラメータ化をサポートしていません – Ronny

関連する問題