Comme Httpretty fonctionne sur la couche socket Python, même les requêtes Web Twisted doivent être mockées. Mais je vois un comportement étrange sur l'utilisation de httpretty. Il essaie de se connecter à localhost en quelque sorte. Ci-dessous exemple montre la différence:Mocking Requêtes HTTP client Twisted utilisant HTTPretty
import httpretty
from twisted.internet import reactor
from twisted.internet.defer import Deferred
from twisted.web.client import Agent
from twisted.web.http_headers import Headers
import requests
@httpretty.activate
def main():
httpretty.register_uri(
httpretty.GET, "http://example.com",
body='[{"title": "Test Deal"}]',
content_type="application/json")
agent = Agent(reactor)
d = agent.request(
'GET',
'http://example.com',
Headers({'User-Agent': ['Twisted Web Client Example']}),
None)
def cbError(message):
print 'Async Failed : %s' % message
d.addErrback(cbError)
def cbShutdown(ignored): reactor.stop()
d.addBoth(cbShutdown)
reactor.run()
print 'Response received from Sync: %s' % \
requests.get('http://example.com').status_code
main()
Et la réponse est:
Async Failed : [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionRefusedError'>: Connection was refused by other side: 111: Connection refused.
]
Response received from Sync: 200
Comment puis-je utiliser httpretty avec le client Web Twisted?
Ah ok. Merci. Des solutions de contournement je peux utiliser à la place de httpretty à cet effet? – prat0318
Il y a quelques efforts pour créer une bibliothèque de test pour les applications utilisant l'agent. Vous pouvez nous aider avec ça,. –