pytest-tornado5 2.0.0

Creator: railscoder56

Last updated:

Add to Cart

Description:

pytesttornado5 2.0.0

A py.test plugin providing fixtures and markers to simplify testing
of asynchronous tornado applications.

Installation
pip install pytest-tornado


Example
import pytest
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

application = tornado.web.Application([
(r"/", MainHandler),
])

@pytest.fixture
def app():
return application

@pytest.mark.gen_test
def test_hello_world(http_client, base_url):
response = yield http_client.fetch(base_url)
assert response.code == 200


Running tests
py.test


Fixtures

io_loop
creates an instance of the tornado.ioloop.IOLoop for each test case

http_port
get a port used by the test server

base_url
get an absolute base url for the test server,
for example, http://localhost:59828

http_server
start a tornado HTTP server, you must create an app fixture,
which returns the tornado.web.Application to be tested

http_client
get an asynchronous HTTP client


Show fixtures provided by the plugin:
py.test --fixtures


Markers
A gen_test marker lets you write a coroutine-style tests used with the
tornado.gen module:
@pytest.mark.gen_test
def test_tornado(http_client):
response = yield http_client.fetch('http://www.tornadoweb.org/')
assert response.code == 200
Marked tests will time out after 5 seconds. The timeout can be modified by
setting an ASYNC_TEST_TIMEOUT environment variable,
--async-test-timeout command line argument or a marker argument.
@pytest.mark.gen_test(timeout=5)
def test_tornado(http_client):
yield http_client.fetch('http://www.tornadoweb.org/')
The mark can also receive a run_sync flag, which if turned off will, instead of running the test synchronously, will add it as a coroutine and run the IOLoop (until the timeout). For instance, this allows to test things on both a client and a server at the same time.
@pytest.mark.gen_test(run_sync=False)
def test_tornado(http_server, http_client):
response = yield http_client.fetch('http://localhost:5555/my_local_server_test/')
assert response.body == 'Run on the same IOLoop!'
Show markers provided by the plugin:
py.test --markers

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.