Comment se moquer d'un objet utilisé dans un gestionnaire de contexte avec unittest.mock
Lors du test d'un code qui utilise une instruction with, cela peut être difficile de se moquer de l’objet sous-jacent. Considérons l'exemple suivant :
def testme(filepath): with open(filepath) as f: return f.read()
Pour tester cette fonction avec unittest.mock, nous devons nous moquer de la fonction open. Voici comment :
Python 3 :
Python 2 :
Exemple :
<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>
N'oubliez pas que dans Python 3, le patch transmettra l'objet simulé comme argument à votre fonction de test, tandis que dans Python 2, vous devez affirmer explicitement le fichier simulé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!