Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-20 19:44:02
original
361 Les gens l'ont consulté

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

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

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

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

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!

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