2016-04-14 25 views
0

Bir pytest fikstürünün çıkışını parametrelendirmek istiyorum. Aşağıdaki çalıştırdığınızda SonraPytest fikstürünün parametrize çıkışı

# 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) 

: Örneğin, iki demirbaşlar olduğunu varsayalım fikstürü 2 fikstür 1'de her param için geçirilen gelen

py.test test_param.py 

sadece ilk yineleme Ben nasıl for döngüsündeki her iterasyonun test_params işlevine geçeceği şekilde fikstür_2 çıktısını parametrelendirin?

Düzenleme: İkinci armatürün ilk olarak aynı şekilde parametrize edilemeyeceğini varsayın çünkü gerçek problemde ikinci parametrenin çıkışı birinci sabitleyiciden gelen girişe bağlıdır.

cevap

0

Donanım işlevinden dönen return kullanıyorsunuz.

Niçin yaptığınız gibi ikinci fikstür niçin parametrelendirilmiyor?

# 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

Bu örnekte işe yarayacaktı, ama ya ikincinin çıktısı ilk girdiden girdiyse ne olur? Çalıştığım testte, ilk fikstür bir dizini ve ikincisi dizindeki dosyaların bir alt kümesini döndürür. – derchambers

+0

py.test şu anda bağımlı parametrelemeyi desteklemiyor – Ronny