skip to navigation
skip to content

pytest-flask 0.10.0

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

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.

 
File Type Py Version Uploaded on Size
pytest-flask-0.10.0.tar.gz (md5) Source 2015-09-16 15KB
pytest_flask-0.10.0-py2.py3-none-any.whl (md5) Python Wheel 2.7 2015-09-16 8KB