Maison >développement back-end >Tutoriel Python >Comment se moquer des réponses du module de requêtes en Python

Comment se moquer des réponses du module de requêtes en Python

Susan Sarandon
Susan Sarandonoriginal
2024-10-20 19:47:30861parcourir

How to Mock Requests Module Responses in Python

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn