2016-10-20 5 views
0

Я пытаюсь установить параметризованные тесты. Приведенный ниже код делает это, но я только хочу, чтобы выполнить код на param1 при его изменении («печать param1» отнимает много времени)Вложенные параметризованные тесты (pytest)

@pytest.mark.parametrize("param3", ["p31", "p32"]) 
@pytest.mark.parametrize("param2", ["p21", "p22"]) 
@pytest.mark.parametrize("param1", ["p11", "p12"]) 
def test_one(param1, param2, param3): 
    print param1 # goal is to run this only when param1 changes 
    print param2, param3 

Я попробовал это, но это не похоже на работу:

@pytest.mark.parametrize("param1", ["p11", "p12"]) 
def test_one(param1, param2, param3): 
    print param1 # goal is to run this only when param1 changes 
    @pytest.mark.parametrize("param3", ["p31", "p32"]) 
    @pytest.mark.parametrize("param2", ["p21", "p22"]) 
    def test_two(param2, param3): 
     print param2, param3 

У кого-нибудь есть идея?

ответ

1

Коллега дал мне решение:

@pytest.fixture(scope="class", params=["B1","B2"]) 
def two(request): 
    print "\n SETUP", request.param 
    yield request.param 
    #print "\n UNDO", request.param 

@pytest.fixture(scope="class", params=["A1", "A2"]) 
def one(request): 
    print "\n SETUP", request.param 
    yield request.param 
    #print "\n UNDO", request.param 

class Test_myclass(): 
    @pytest.mark.parametrize("param4", ["D1", "D2"]) 
    @pytest.mark.parametrize("param3", ["C1", "C2"]) 
    def test_three(self, one, two, param3, param4): 
     print "\n ({0} {1}) RUN ".format(one, two), param3, param4, 
Смежные вопросы