ホームページ >バックエンド開発 >Python チュートリアル >コンテキストマネージャーで使用されるオブジェクトをunittest.mockでモックする方法は?
unittest.mock を使用してコンテキスト マネージャーで使用されるオブジェクトをモックする方法
with ステートメントを使用するコードをテストする場合、次のことが可能です。基礎となるオブジェクトをモックすることに挑戦しています。次の例を考えてみましょう:
def testme(filepath): with open(filepath) as f: return f.read()
unittest.mock を使用してこの関数をテストするには、open 関数をモックする必要があります。方法は次のとおりです:
Python 3:
Python 2:
例:
<code class="python">from unittest.mock import patch, mock_open @patch("builtins.open", new_callable=mock_open, read_data="data") def test_patch(mock_file): assert open("path/to/open").read() == "data" mock_file.assert_called_with("path/to/open")</code>
Python 3 では、patch はモックされたオブジェクトを引数としてテスト関数に渡しますが、Python 2 ではモックされたファイルを明示的にアサートする必要があることを覚えておいてください。
以上がコンテキストマネージャーで使用されるオブジェクトをunittest.mockでモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。