Skip to main content

Helpers to use requests_mock and responses with a Flask test client.

Project description

Build Status codecov PyPI Documentation Status

requests-mock-flask

requests-mock-flask helps with testing Flask applications with httpretty, responses or requests-mock.

Installation

Requires Python 3.12+.

pip install requests-mock-flask

Usage example

import flask
import httpretty
import requests
import responses
import requests_mock

from requests_mock_flask import add_flask_app_to_mock

app = flask.Flask("test_app")

@app.route('/')
def _() -> str:
     """Return a simple message."""
     return 'Hello, World!'

@responses.activate
def test_responses_decorator() -> None:
    """
    It is possible to use the helper with a ``responses`` decorator.
    """
    add_flask_app_to_mock(
        mock_obj=responses,
        flask_app=app,
        base_url='http://www.example.com',
    )

    response = requests.get('http://www.example.com')

    assert response.status_code == 200
    assert response.text == 'Hello, World!'

def test_responses_context_manager() -> None:
    """
    It is possible to use the helper with a ``responses`` context manager.
    """
    with responses.RequestsMock(
        assert_all_requests_are_fired=False,
    ) as resp_m:
        add_flask_app_to_mock(
            mock_obj=resp_m,
            flask_app=app,
            base_url='http://www.example.com',
        )

        response = requests.get('http://www.example.com')

    assert response.status_code == 200
    assert response.text == 'Hello, World!'

def test_requests_mock_context_manager() -> None:
    """
    It is possible to use the helper with a ``requests_mock`` context
    manager.
    """
    with requests_mock.Mocker() as resp_m:
        add_flask_app_to_mock(
            mock_obj=resp_m,
            flask_app=app,
            base_url='http://www.example.com',
        )

        response = requests.get('http://www.example.com')

    assert response.status_code == 200
    assert response.text == 'Hello, World!'

def test_requests_mock_adapter() -> None:
    """
    It is possible to use the helper with a ``requests_mock`` fixture.
    """
    session = requests.Session()
    adapter = requests_mock.Adapter()
    session.mount('mock', adapter)

    add_flask_app_to_mock(
        mock_obj=adapter,
        flask_app=app,
        base_url='mock://www.example.com',
    )

    response = session.get('mock://www.example.com')

    assert response.status_code == 200
    assert response.text == 'Hello, World!'

def test_httpretty_context_manager() -> None:
    """
    It is possible to use the helper with a ``httpretty`` context
    manager.
    """
    with httpretty.core.httprettized():
        add_flask_app_to_mock(
            mock_obj=httpretty,
            flask_app=app,
            base_url='http://www.example.com',
        )

        response = requests.get('http://www.example.com')

    assert response.status_code == 200
    assert response.text == 'Hello, World!'

Use cases

  • Use requests or other Python APIs for testing Flask applications.

  • Create a test suite which can test a Flask application as well as a live web application, to make a verified fake.

  • Test a service which calls a Flask application that you have the source code for.

Full documentation

See the full documentation for more information including how to contribute.

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

requests_mock_flask-2024.8.30.1.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

requests_mock_flask-2024.8.30.1-py2.py3-none-any.whl (7.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file requests_mock_flask-2024.8.30.1.tar.gz.

File metadata

File hashes

Hashes for requests_mock_flask-2024.8.30.1.tar.gz
Algorithm Hash digest
SHA256 1b750b835b07a395267e5440a4fbb88caa043c57c0bb785e1687b03c127347ce
MD5 501032de4c7f46d6b3cdf7258cee9a5d
BLAKE2b-256 c4e2ff0a60d1b00728c8f66ece46c9f6461cf86abde0c157d415d13cb65c02f3

See more details on using hashes here.

File details

Details for the file requests_mock_flask-2024.8.30.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for requests_mock_flask-2024.8.30.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 60534ef67ea01821a41f7da4d75b1338114814bd5a0bcb5f232a597df6945638
MD5 d9dddc8103ea2e61c6d6ad6310d169de
BLAKE2b-256 7c429d540b63544f9556626f69b0136eaec7e15d7f77cf603c5f09d913a9720b

See more details on using hashes here.

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