{"library":"pytest-tornasync","title":"pytest-tornasync","description":"pytest-tornasync is a simple pytest plugin that provides helpful fixtures for testing Tornado (version 5.0 or newer) applications. It simplifies testing native Python 3.5+ coroutines by eliminating the need for decorators like `@pytest.mark.gen_test`. The current version is 0.6.0.post2, with the last release in July 2019, indicating a stalled release cadence and an 'at risk' maintenance status, although the plugin remains functional for its intended purpose.","language":"python","status":"maintenance","last_verified":"Sun May 17","install":{"commands":["pip install pytest-tornasync"],"cli":null},"imports":["import pytest","import tornado.web"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pytest\nimport tornado.web\nfrom tornado.testing import AsyncHTTPTestCase\n\n# Define your Tornado application\nclass MainHandler(tornado.web.RequestHandler):\n    async def get(self):\n        self.write(\"Hello, world\")\n\ndef make_app():\n    return tornado.web.Application([\n        (r\"/\", MainHandler),\n    ])\n\n# Define the 'app' fixture for pytest-tornasync\n@pytest.fixture\ndef app():\n    return make_app()\n\n# Write an async test using the http_server_client fixture\nasync def test_main_handler(http_server_client):\n    response = await http_server_client.fetch('/')\n    assert response.code == 200\n    assert response.body == b\"Hello, world\"\n","lang":"python","description":"This quickstart demonstrates how to set up a basic Tornado application and test it using `pytest-tornasync`. The `app` fixture provides the `tornado.web.Application` instance, and the `http_server_client` fixture (provided by `pytest-tornasync`) is used to make asynchronous HTTP requests to the test server. Tests are defined as native Python `async def` functions.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.6.0.post2","pypi_latest":"0.6.0.post2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3,"avg_import_s":0.44,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.45,"mem_mb":12.2,"disk_size":"34.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.29,"mem_mb":12.2,"disk_size":"35M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.56,"mem_mb":12.9,"disk_size":"37.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.49,"mem_mb":12.9,"disk_size":"38M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.52,"mem_mb":12.8,"disk_size":"29.3M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.51,"mem_mb":12.8,"disk_size":"30M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.48,"mem_mb":11.8,"disk_size":"29.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.43,"mem_mb":11.8,"disk_size":"30M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.36,"mem_mb":11.2,"disk_size":"33.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytest-tornasync","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.33,"mem_mb":11.2,"disk_size":"34M"}]}}