0

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
4

1 に答える 1