Python単体テストでwithステートメントを使用してOpen関数をモックする方法?

DDD
リリース: 2024-10-20 16:25:29
オリジナル
351 人が閲覧しました

How to Mock the Open Function with With Statements in Python Unit Tests?

Python で With ステートメントを使用して Open をモックする

with ステートメントで open() 関数を使用するコードをテストする場合、次のことが必要になります。オープンコールをモックして、期待される動作をアサートします。 Python の Mock フレームワークを使用してこれを行う方法は次のとおりです。

Python 3

  1. Patch Builtins.open: 組み込みにパッチを適用します。モック フレームワークの mock_open を使用した open 関数。
  2. コンテキスト マネージャーとして Patch を使用する: コンテキスト マネージャーとして patch を使用します。これにより、元のオブジェクトを置き換えるモック化されたオブジェクトが返されます。
  3. Call Open: ファイルパスを使用してファイルを開きます。
  4. Assert Content: ファイルから読み取られたコンテンツが期待どおりであることをアサートします。
  5. Assert Mocked Call: モックされたオブジェクトが正しいファイルパス引数を使用して呼び出されたことをアサートします。
<code class="python">from unittest.mock import patch, mock_open

with patch("builtins.open", mock_open(read_data="data")):
    mock_file = open("path/to/open")
    assert mock_file.read() == "data"
mock_file.assert_called_with("path/to/open")</code>
ログイン後にコピー

あるいは、 new_callable 引数を次のように設定して、 patch をデコレータとして使用することもできます。 mock_open:

<code class="python">@patch("builtins.open", new_callable=mock_open, read_data="data")
def test_patch(mock_file):
    open("path/to/open")
    assert mock_file.read() == "data"
    mock_file.assert_called_with("path/to/open")</code>
ログイン後にコピー

Python 2

  1. パッチ __builtin__.open: Python のbuiltins.open の代わりに __builtin__.open をパッチします。 2.
  2. モックのインポート: pip install モックを使用してモックをインストールします。
  3. パッチをコンテキスト マネージャーとして使用: Python と同じ手順に従います。 3.

以上がPython単体テストでwithステートメントを使用してOpen関数をモックする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!