Demandes moqueuses pour contrôler les réponses
En Python, le package mock fournit un moyen puissant de se moquer de modules ou de classes externes, vous permettant de manipuler comportement et valider les interactions. Dans le contexte des requêtes HTTP, se moquer du module Requêtes peut être particulièrement utile pour tester du code qui s'appuie sur des services externes.
Étape 1 : Se moquer du module Requêtes
Pour moquez-vous du module Requests, vous devrez patcher la fonction get() avec une fonction personnalisée qui renvoie les réponses souhaitées. Vous pouvez définir une méthode fictive comme celle-ci :
<code class="python">def mocked_requests_get(url, **kwargs): if url == "aurl": return MockResponse("a response") elif url == "burl": return MockResponse("b response") else: raise Exception("URL not mocked")</code>
Notez que cette méthode attend une URL valide et renvoie un objet MockResponse, qui représente la fausse réponse avec un contenu prédéfini.
Étape 2 : Corrigez le module de requêtes d'origine
Une fois que vous avez défini la méthode simulée, vous pouvez corriger le request.get() d'origine avec celui-ci à l'aide du décorateur @mock.patch. Cela remplacera tous les appels à request.get() dans le code que vous testez par votre comportement simulé.
<code class="python">@mock.patch("requests.get", side_effect=mocked_requests_get) def test_myview(self, mock_get): # Your test goes here</code>
Étape 3 : Appelez la vue et vérifiez les réponses
Vous pouvez désormais appeler votre fonction comme d'habitude et vérifier que les réponses attendues ont été obtenues. L'objet fictif peut être inspecté pour affirmer que la fonction get() a été appelée avec des arguments spécifiques et a renvoyé les valeurs souhaitées.
Exemple de code :
<code class="python">import requests from unittest import mock class MyViewTest(unittest.TestCase): # ... def test_myview(self, mock_get): self.assertEqual(res1.text, "a response") self.assertEqual(res2.text, "b response") self.assertEqual(res3.text, "c response") # Verify mock calls mock_get.assert_called_with('aurl') mock_get.assert_called_with('burl') mock_get.assert_called_with('curl')</code>
Rappelez-vous pour vérifier à la fois le contenu textuel des réponses ainsi que le nombre d'appels et les arguments transmis à votre méthode fictive. Cela vous permet de vous assurer que les interactions attendues ont eu lieu et que le comportement souhaité a été atteint.
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!