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 @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
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_tornado5-2.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a61164e1f34603be446c17f778b1e6d53e3153c0e68f47e632fe6184357c2f45 |
|
MD5 | 988caac954f818044bd1c63f6b30266e |
|
BLAKE2-256 | 5b8618862ee76649dd69416c1ff3228ca0872826cbc361edc6fb5dfa3dc3c17e |