Vous pouvez utiliser un moqueur bibliothèque comme Moqueur à intercepter les appels à la demande de la bibliothèque et de rendre un certain nombre de résultats.
Comme un exemple très simple, considérer cette classe qui utilise les demandes de la bibliothèque:
class MyReq(object):
def doSomething(self):
r = requests.get('https://api.github.com', auth=('user', 'pass'))
return r.headers['content-type']
Voici un test unitaire qui intercepte l'appel à requests.get
et renvoie un résultat déterminé pour les tests:
import unittest
import requests
import myreq
from mocker import Mocker, MockerTestCase
class MyReqTests(MockerTestCase):
def testSomething(self):
# Create a mock result for the requests.get call
result = self.mocker.mock()
result.headers
self.mocker.result({'content-type': 'mytest/pass'})
# Use mocker to intercept the call to requests.get
myget = self.mocker.replace("requests.get")
myget('https://api.github.com', auth=('user', 'pass'))
self.mocker.result(result)
self.mocker.replay()
# Now execute my code
r = myreq.MyReq()
v = r.doSomething()
# and verify the results
self.assertEqual(v, 'mytest/pass')
self.mocker.verify()
if __name__ == '__main__':
unittest.main()
Lorsque j'exécute ce test j'obtiens le résultat suivant:
.
----------------------------------------------------------------------
Ran 1 test in 0.004s
OK