So verspotten Sie ein in einem Kontextmanager verwendetes Objekt mit unittest.mock
Beim Testen von Code, der eine with-Anweisung verwendet, kann dies der Fall sein Es ist schwierig, das zugrunde liegende Objekt zu verspotten. Betrachten wir das folgende Beispiel:
def testme(filepath): with open(filepath) as f: return f.read()
Um diese Funktion mit unittest.mock zu testen, müssen wir die offene Funktion verspotten. So geht's:
Python 3:
Python 2:
Beispiel:
<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>
Denken Sie daran, dass in Python 3 der Patch das simulierte Objekt als Argument an Ihre Testfunktion übergibt, während Sie in Python 2 die simulierte Datei explizit bestätigen müssen.
Das obige ist der detaillierte Inhalt vonWie verspotte ich in Kontextmanagern verwendete Objekte mit unittest.mock?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!