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