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 ?
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!