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

Susan Sarandon
Libérer: 2024-10-20 19:47:30
original
769 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

É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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!