Skip to content

SuminAndrew/tornado-httpclient-mock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tornado-httpclient-mock

A library for mocking requests in Tornado HTTP client

Build Status codecov

This library can be used to patch AsyncHTTPClient.fetch_impl method to stub requests to external resources.

tornado_mock.httpclient.patch_http_client does this patching on AsyncHTTPClient instance. After that you can use tornado_mock.httpclient.set_stub method to setup an appropriate responses to the requests.

from tornado import gen
from tornado.httpclient import AsyncHTTPClient
from tornado.testing import AsyncHTTPTestCase
from tornado.web import Application, RequestHandler

from tornado_mock.httpclient import get_response_stub, patch_http_client, set_stub


class TestHandler(RequestHandler):
    @gen.coroutine
    def get(self, *args, **kwargs):
        response1 = yield self.application.http_client.fetch('http://example.com/path?query')
        self.write(response1.body)

        response2 = yield self.application.http_client.fetch('http://test.com/path')
        self.finish(response2.body)


class HTTPClientMockTest(AsyncHTTPTestCase):
    def get_app(self):
        app = Application([('/test', TestHandler)])
        self.app_http_client = app.http_client = AsyncHTTPClient(force_instance=True)
        return app

    def test_mock(self):
        patch_http_client(self.app_http_client)

        def get_response(request):
            return get_response_stub(request, buffer='STUB2')

        set_stub(self.app_http_client, 'http://example.com/path', response_body='STUB1')
        set_stub(self.app_http_client, 'http://test.com/path', response_function=get_response)

        self.assertEqual(self.fetch('/test').body, b'STUB1STUB2')

For more information see docstrings in httpclient.py.

About

A library for mocking requests in Tornado HTTP client

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages