Перемещение патч-декораторов в функцию - PullRequest
0 голосов
/ 13 февраля 2020

Я пишу тесты для моделей, которые запускают различные функции, которые go выходят за рамки тестирования (некоторые функции вызывают сетевую функциональность и другие нежелательные вещи, которые не являются частью теста, могут быть медленными, чтобы просто запустить и легче просто выключить для целей тестирования). Мы делаем это, используя серию декораторов @patch над каждой тестовой функцией по мере необходимости.

Мне не нравится помещать одинаковые декораторы над каждой тестовой функцией в тестовом классе, потому что они загромождают код. Можно ли переместить все мои патчи в функцию и просто вызвать ее оттуда? Я попробовал простую реализацию, как показано ниже, но она не сработала для меня:


from unittest.mock import patch

class MyTest(APITestCase):

def patch_all(self):
    p1 = patch('mod1.func1')
    p2 = patch('mod1.func2')
    ...
    return (p1, p2, ...)

def test_function(self):
    p1, p2, ... = self.patch_all()
    perform_actual_test()

Есть ли способ исправления функций без написания декораторов повсюду и просто вызова функции вместо этого?

...