Skip to main content

A set of py.test fixtures to test Flask applications.

Project description

A set of pytest fixtures to test Flask extensions and applications.

Features

Plugin provides some fixtures to simplify app testing:

  • client - an instance of app.test_client,

  • client_class - client fixture for class-based tests,

  • config - the application config,

  • live_server - runs an application in the background (useful for tests with Selenium and other headless browsers),

  • request_ctx - the request context,

  • accept_json, accept_jsonp, accept_any - accept headers suitable to use as parameters in client.

To pass options to your application use the pytest.mark.options marker:

@pytest.mark.options(debug=False)
def test_app(app):
  assert not app.debug, 'Ensure the app not in debug mode'

During tests execution the request context has been pushed, e.g. url_for, session and other context bound objects are available without context managers:

def test_app(client):
    assert client.get(url_for('myview')).status_code == 200

Response object has a json property to test a view that returns a JSON response:

@api.route('/ping')
def ping():
    return jsonify(ping='pong')

def test_api_ping(client):
    res = client.get(url_for('api.ping'))
    assert res.json == {'ping': 'pong'}

If you want your tests done via Selenium or other headless browser use the live_server fixture. The server’s URL can be retrieved using the url_for function:

from flask import url_for

@pytest.mark.usefixtures('live_server')
class TestLiveServer:

    def test_server_is_up_and_running(self):
        res = urllib2.urlopen(url_for('index', _external=True))
        assert b'OK' in res.read()
        assert res.code == 200

Quick Start

To start using a plugin define your application fixture in conftest.py:

from myapp import create_app

@pytest.fixture
def app():
    app = create_app()
    return app

Install the extension with dependencies and run your test suite:

$ pip install pytest-flask
$ py.test

Documentation

The latest documentation is available at http://pytest-flask.readthedocs.org/en/latest/.

Contributing

Don’t hesitate to create a GitHub issue for any bug or suggestion.

Project details


Download files

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

Source Distribution

pytest-flask-1.0.0.tar.gz (24.9 kB view hashes)

Uploaded Source

Built Distribution

pytest_flask-1.0.0-py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page