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