我正在用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
答案 0 :(得分:1)
您确实可以这样创建补丁,但随后还需要显式启用它。测试完成后,您也想停止补丁。
Not Null constrain error