"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-02
Parcourir:103

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 :

def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')

Pour simuler ce 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.

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)

Étape 2 : Corriger le module de requêtes

Dans votre scénario de test, utilisez le décorateur mock.patch() pour remplacer les requêtes réelles module avec votre fonction simulée.

@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
    ...

Étape 3 : Vérifier les assertions

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

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')

En suivant ces étapes, vous pouvez simuler efficacement 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 garantissant que les dépendances externes n'interfèrent pas avec vos résultats.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729424478. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3