Pythonのunittest.mockモジュールは、テスト中にシステムの一部をモックオブジェクトに置き換え、それらがどのように使用されたかについてアサーションを行うことができるライブラリです。

モックの基本

unittest.mockには、テストスイート全体でスタブを作成する必要性を排除するための中心的なMockクラスが提供されています。アクションを実行した後、どのメソッドや属性がどのような引数で呼び出されたかについてアサーションを行うことができます。

from unittest.mock import MagicMock
thing = ProductionClass()
thing.method = MagicMock(return_value=3)
thing.method(3, 4, 5, key='value')  # returns: 3
thing.method.assert_called_with(3, 4, 5, key='value')

また、unittest.mockは、テストのスコープ内でモジュールやクラスレベルの属性をパッチするpatch()デコレータも提供しています。

SQLクエリのモック

SQLAlchemyのセッションとデータをモックするためにalchemy_mockを使用することもできます。また、SQLiteからの任意の呼び出しチェーンをモックし、pd.read_sql_queryの戻り値をモックすることも可能です。

from alchemy_mock.mocking import UnifiedAlchemyMagicMock
db_session = UnifiedAlchemyMagicMock()
db_session.query.return_value.all.return_value = [1,2,3]
mock_res = test_asd(db_session)
self.assertEqual(mock_res, [1,2,3])

これらのテクニックを使用することで、Pythonのunittestフレームワークを使用して効率的なテストを作成することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です