2015-06-29 2 views
2

Я хотел бы изменить порядок выполнения теста внутри класса тестирования при использовании @ pytest.mark.parametrize fixture.py.test изменить порядок тестирования внутри класса теста

Например:

@pytest.mark.parametrize("param", ['test1', 'test2']) 
class TestForTesting: 
    def test_1(self, param): 
     print param 
    def test_2(self, param): 
     print param 

В уходе py.test будет работать: test_1 с 'test1', параметры 'test2' и после этого test_2 с 'test1', параметры 'test2.

Что бы я хотел сделать, это запустить его в следующем порядке: test_1 с параметром 'test1', а затем test_2 с параметром 'test1' и после этого test_1 с параметром 'test2', а затем test_2 с параметром 'test2' ».

Есть ли способ сделать это?

Заранее спасибо.

+0

Почему вопрос заказа? Ваши тесты должны быть независимыми. – jonrsharpe

+0

Иногда я хочу иметь «контекст», поэтому было бы удобно запустить тест в определенном порядке с помощью прибора параметризации. – Den

ответ

1

Если вы не используете parametrize на всех, но «старый добрый» путь вместо этого, то вы получите заказ, который вы хотите в этом случае:

class BaseTest: 
    def test_1(self): 
     print self.param 
    def test_2(self): 
     print self.param 

class TestX(BaseTest): 
    param = "A" 

class TestY(BaseTest): 
    param = "B" 
+0

Спасибо за идею! Это может быть решение. По правде говоря, мне нравится параметризатор, я думаю, что это единственный недостаток, который я видел до сих пор. – Den

 Смежные вопросы

  • Нет связанных вопросов^_^