Maison  >  Article  >  développement back-end  >  Comment se moquer des requêtes et des réponses HTTP dans les scénarios de test Python ?

Comment se moquer des requêtes et des réponses HTTP dans les scénarios de test Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-20 19:44:02278parcourir

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

Demandes et réponses moqueuses pour les tests Python

Dans les tests Python, il devient nécessaire de simuler les modules et leurs fonctionnalités pour contrôler le flux d'exécution et vérifier des scénarios spécifiques. Parmi ceux-ci, se moquer du module de requêtes est couramment utilisé pour tester des fonctions ou des méthodes qui s'appuient sur des requêtes HTTP.

Considérez un fichier vues.py avec le code suivant :

<code class="python">def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')</code>

Pour se moquer de cela comportement, vous pouvez utiliser le package simulé Python. Voici comment y parvenir étape par étape :

Étape 1 : Définir le comportement simulé

Pour simuler le module de requêtes, définissez une fonction qui remplacera request.get (). Dans cette fonction, vous pouvez spécifier la réponse souhaitée pour chaque URL.

<code class="python">def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)</code>

Étape 2 : Patcher le module de requêtes

Dans votre cas de test, utilisez le mock Décorateur .patch() pour remplacer le module de requêtes réel par votre fonction fictive.

<code class="python">@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...</code>

Étape 3 : Vérifier les assertions

Dans votre fonction de test, vous pouvez utiliser assertions pour vérifier que les réponses attendues sont renvoyées.

<code class="python">self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')</code>

En suivant ces étapes, vous pouvez efficacement simuler les requêtes HTTP et contrôler les réponses dans vos scénarios de test Python. Cela vous permet d'isoler et de tester des fonctionnalités spécifiques tout en vous assurant que les dépendances externes n'interfèrent pas avec vos résultats.

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