Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verspotte ich die Open-Funktion mit With-Anweisungen in Python-Unit-Tests?

Wie verspotte ich die Open-Funktion mit With-Anweisungen in Python-Unit-Tests?

DDD
DDDOriginal
2024-10-20 16:25:29352Durchsuche

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

Open mit With-Anweisungen in Python verspotten

Beim Testen von Code, der die open()-Funktion mit einer with-Anweisung verwendet, ist es notwendig, dies zu tun Machen Sie sich über den offenen Aufruf lustig, um das erwartete Verhalten durchzusetzen. So machen Sie es mit dem Mock-Framework in Python:

Python 3

  1. Patch Builtins.open: Patchen Sie die Builtins. Öffnen Sie die Funktion mit „mock_open“ aus dem Mock-Framework.
  2. Verwenden Sie Patch als Kontextmanager:Verwenden Sie Patch als Kontextmanager, der das simulierte Objekt zurückgibt, das das Original ersetzt.
  3. Öffnen aufrufen: Öffnen Sie die Datei unter Verwendung des Dateipfads.
  4. Inhalt bestätigen: Stellen Sie sicher, dass der aus der Datei gelesene Inhalt wie erwartet ist.
  5. Verspotteten Aufruf bestätigen:Stellen Sie sicher, dass das simulierte Objekt mit dem richtigen Dateipfad-Argument aufgerufen wurde.
<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>

Alternativ können Sie patch als Dekorator verwenden, wobei das Argument new_callable auf gesetzt ist 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. Patch __builtin__.open: Patch __builtin__.open anstelle vonbuiltins.open in Python 2.
  2. Mock importieren: Mock mit Pip Install Mock installieren.
  3. Patch als Kontextmanager verwenden: Befolgen Sie die gleichen Schritte wie in Python 3.

Das obige ist der detaillierte Inhalt vonWie verspotte ich die Open-Funktion mit With-Anweisungen in Python-Unit-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn