Maison  >  Article  >  développement back-end  >  Comment se moquer efficacement du module de requêtes de Python pour les tests ?

Comment se moquer efficacement du module de requêtes de Python pour les tests ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 19:44:30954parcourir

How to Effectively Mock Python's Requests Module for Testing?

Demandes moqueuses avec le package Mock de Python

Pour simuler efficacement le module de requêtes de Python, suivez ces étapes :

Étape 1 : simuler le module de requêtes

Pour simuler le module de requêtes dans le contexte de votre classe de test, utilisez la syntaxe suivante :

<code class="python">import mock
@mock.patch('requests.get')
def test_function(self, mockedRequests):</code>

À l'intérieur de la fonction de test :

  • Attribuez les appels 'aurl', 'burl' et 'curl' à l'objet mockedRequests, en spécifiant les valeurs de retour souhaitées pour chaque URL.

Exemple :

<code class="python">mockedRequests.get('aurl').return_value = 'a response'
mockedRequests.get('burl').return_value = 'b response'
mockedRequests.get('curl').return_value = 'c response'</code>

Étape 2 : Appelez la fonction View

Dans votre scénario de test, appelez la fonction myview pour exécuter les requêtes HTTP.

Étape 3 : Vérifier la réponse

Assurer que les objets de réponse contiennent les valeurs attendues (« une réponse », « réponse b », « réponse c »).

Exemple :

<code class="python">res1 = myview(request)
self.assertIn('a response', res1)
res2 = myview(request)
self.assertIn('b response', res2)
res3 = myview(request)
self.assertIn('c response', res3)</code>

Exemple de code :

<code class="python">import unittest
import mock
from views import myview

# Mock the requests module
@mock.patch('requests.get')
def test_myview(self, mockedRequests):
    # Define return values for URL calls
    mockedRequests.get('aurl').return_value = 'a response'
    mockedRequests.get('burl').return_value = 'b response'
    mockedRequests.get('curl').return_value = 'c response'

    # Call the view function
    res1 = myview(request)
    res2 = myview(request)
    res3 = myview(request)

    # Verify response
    self.assertIn('a response', res1)
    self.assertIn('b response', res2)
    self.assertIn('c response', res3)

if __name__ == '__main__':
    unittest.main()</code>

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