Порядок переключения декораторов в зависимости от того, какой тестовый пример выполняется? - PullRequest
0 голосов
/ 29 августа 2018

Чтобы протестировать флаг функции, я изменяю / исправляю две функции с патчем.

Однако всякий раз, когда я переключаю порядок этих фиктивных декораторов, это приводит к сбою некоторых тестов. Когда я переключаю их снова, эти неудачные тесты проходят, а предыдущие проходящие тесты не проходят.

Насколько мне известно, это связано с порядком, в котором декораторы оцениваются в Python.

Есть ли способ объявить / указать для одного конкретного теста, какой декоратор должен быть оценен первым?

@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
    # code...

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете применить декораторы к каждому методу вашего класса MyClassTestCase индивидуально, указав, таким образом, порядок, в котором нужно оценивать декораторы для каждого метода.

В основном изменить:

@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
    def test_that_it_works(self, *args):
        # do test stuff

Кому:

class MyClassTestCase(TestCase):
    @mock.patch.object(MyMockClass, '_some_function', return_value=False)
    @mock.patch.object(MyMockClass, '_another_function', return_value=False)
    def test_that_it_works(self, mock_another, mock_some):
        # do test stuff
...