Heim >Backend-Entwicklung >Python-Tutorial >Wie verspotte ich geöffnete Dateien in Python mit Anweisungen mithilfe des Unit Test Frameworks?

Wie verspotte ich geöffnete Dateien in Python mit Anweisungen mithilfe des Unit Test Frameworks?

Linda Hamilton
Linda HamiltonOriginal
2024-10-20 16:23:29640Durchsuche

How to Mock Open Files in Python's With Statements Using the Unit Test Framework?

Offene Dateien in With-Anweisungen im Unit Test Framework von Python verspotten

Beim Testen von Code, der offene Dateien in With-Anweisungen verwendet, besteht die Notwendigkeit, dies zu tun Verspotten Sie diese offenen Dateien für genaue Unit-Tests. Dieser Artikel befasst sich mit den Ansätzen zum Verspotten solcher Dateien mithilfe des Mock-Frameworks von Python.

Python Version 3

Das Mock-Framework stellt die Funktion „mock_open“ bereit, die in Verbindung verwendet werden kann mit dem Patch-Kontextmanager, um geöffnete Dateien zu verspotten. Die Patch-Funktion, die als Kontextmanager verwendet wird, gibt das Objekt zurück, das das gepatchte Objekt ersetzt:

<code class="python">from unittest.mock import patch, mock_open
with patch("builtins.open", mock_open(read_data="data")) as mock_file:
    assert open("path/to/open").read() == "data"
mock_file.assert_called_with("path/to/open")</code>

Alternativ kann die Patch-Funktion als Dekorator mit dem Argument new_callable verwendet werden. Denken Sie daran, dass zusätzliche Argumente, die nicht vom Patch verwendet werden, an die Funktion new_callable übergeben werden:

<code class="python">@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>

In diesem Fall wird das simulierte Objekt als Argument an die Testfunktion übergeben.

Python Version 2

Für Python 2 muss das Modul __builtin__.open anstelle vonbuiltins.open gepatcht werden und das Mock-Framework muss separat über pip:

<code class="python">from mock import patch, mock_open
with patch("__builtin__.open", mock_open(read_data="data")) as mock_file:
    assert open("path/to/open").read() == "data"
mock_file.assert_called_with("path/to/open")</code>
installiert werden

Diese Techniken ermöglichen das effektive Verspotten offener Dateien innerhalb von Anweisungen und erleichtern so umfassende Unit-Tests für Python-Anwendungen.

Das obige ist der detaillierte Inhalt vonWie verspotte ich geöffnete Dateien in Python mit Anweisungen mithilfe des Unit Test Frameworks?. 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