Skip to main content

"Easy to mock external HTTP request in Tornado."

Project description

https://travis-ci.org/coldnight/flymock.svg?branch=master PyPI

flymock

Easy to mock external HTTP request in Tornado.

Installation

$ pip install --upgrade flymock

Create mock data

Make a directory in your tests package:

$ mkdir __mock__

Use the hostname as the config filename, assume the url is http://example.com/demo, the config filename should be example.com.yaml, the config see below:

- path: /demo    # path of the request to match
  method: GET    # method of the request to match
  headers:       # Response headers
    Content-Type: application/json
  body: Hello world # Response body
  code: 200      # Response status code

- path: /file
  body_type: file     # Use a file content as the response
  body: demo.json     # Filename(same path of the config file)
  code: 202

- path: /json
  body:               # If body is an object, that will response JSON content.
   code: 2

Usage

import os

from tornado import httpclient
from tornado import testing

from flymock import FlyPatcher


class DemoTestCase(testing.AsyncTestCase):
    def setUp(self):
        super(DemoTestCase, self).setUp()
        path = os.path.join(os.path.dirname(__file__), "__mock__")
        self.patcher = FlyPatcher(path)
        self.http_client = httpclient.AsyncHTTPClient()
        self.patcher.start()

    def tearDown(self):
        super(DemoTestCase, self).tearDown()
        self.patcher.stop()

    @testing.gen_test
    def test_mocked(self):
        resp = yield self.http_client.fetch("http://example.com/demo")
        self.assertEqual(resp.code, 200)

Adjust response dynamic:

patcher = FlyPatcher("/path/to/__mock__")
def hook(response):
   response.patch_json({"a": 1})

with patcher.dynamic_hook(hook):
    # code goes here
    pass

# shortcut to adjust JSON
with patcher.patch_json({"a": 1}):
   # code goes here
   pass

Release history Release notifications

This version
History Node

0.0.4

History Node

0.0.4.dev3

History Node

0.0.3

History Node

0.0.3.dev1

History Node

0.0.2

History Node

0.0.2.dev6

History Node

0.0.2.dev5

History Node

0.0.2.dev4

History Node

0.0.2.dev1

History Node

0.0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
flymock-0.0.4.tar.gz (12.1 kB) Copy SHA256 hash SHA256 Source None Dec 8, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page