Я пишу юнит-тесты на python.
Мой код часто использует redis
, и я хочу поиздеваться над этим.Я хотел бы сделать это глобально и не беспокоиться о насмешках в каждом тесте, но я не думаю, что это возможно при использовании декоратора @patch
.
Пример рабочего теста -
class ExamplesTests(AbstractTestCase, unittest.TestCase):
@patch('main.redis')
def test_the_thing(self, redis: MagicMock):
redis.set = self._my_mock_set # method that sets a dict val
redis.get = self._my_mock_get # method that gets a dict val
result = main.do_the_thing()
self.assertTrue(result)
Мне на самом деле не нужно то, что находится в фиктивном кеше, я просто пытаюсь предотвратить необходимость очистки реального кэша Redis, который используется другими процессами.Я попытался сделать это в setUp
-
class AbstractTestCase(ABC):
@patch('main.redis')
def setUp(self, redis: MagicMock):
redis.set = self._my_mock_set # method that sets a dict val
redis.get = self._my_mock_get # method that gets a dict val
Ошибка: setUp () принимает 2 позиционных аргумента, но 3 было дано
Вместо исправления каждого теста,Можно ли использовать настройки без декоратора?Как то так? -
class AbstractTestCase(ABC):
def setUp(self):
redis = patch('main.redis')
redis.set = self._my_mock_set # method that sets a dict val
redis.get = self._my_mock_get # method that gets a dict val