A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications.
Project description
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
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/')
By default, all generator tests are automatically marked and are executed using tornado’s event loop created by the io_loop fixture. Implicit marking can be disabled with a --no-gen-test command line argument. It can also be disabled for individual tests by settings a disabled=True argument on the marker.
# equivalent to the test above
def test_tornado(http_client):
response = yield http_client.fetch('http://www.tornadoweb.org/')
assert response.code == 200
# disable asynchronous testing, in py.test generators are used to
# collect additional tests
@pytest.mark.gen_test(disabled=True)
def test_default_behavior():
yield _test_one
yield _test_two
Show markers provided by the plugin:
py.test --markers
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_tornado-0.4.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7974db65cb386d7881ca520292387c93815bcc5fc0fede8a924c4e120c79e22b |
|
MD5 | 5c3793965a87fc252516f756386ada3d |
|
BLAKE2b-256 | 8f54f2f768fe132ecd903ba65d5136495408b8f0d769778824ae84a0f35e19d9 |