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.11+.

pip install requests-mock-flask

Usage example

import flask
import requests
import responses
import requests_mock

from requests_mock_flask import add_flask_app_to_mock

app = flask.Flask(__name__)

@app.route('/')
def _() -> str:
    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`` adapter.
    """
    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!'

@httpretty.activate
def test_httpretty_decorator() -> None:
    """
    It is possible to use the helper with HTTPretty.
    """
    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-2023.3.5.1.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

requests_mock_flask-2023.3.5.1-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file requests-mock-flask-2023.3.5.1.tar.gz.

File metadata

File hashes

Hashes for requests-mock-flask-2023.3.5.1.tar.gz
Algorithm Hash digest
SHA256 189f8e01a41297dcc8873866a8ef76dacc7aa68d13111a09d6ee527a2bbc91d1
MD5 130589851eda5a940fe561c32b990077
BLAKE2b-256 99d849de6e226a757e7cac0bb7a7faa13b0f94ecd41bfadf17553ead13d82c72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for requests_mock_flask-2023.3.5.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ea01242e73fad39e157cafd6555e73f0e512d49164d67925180cbe6a800ea4e1
MD5 90c07e9fb34f2df3a4b2634cd928ca9f
BLAKE2b-256 e31598d6f6d3c9b4613e85fb557089d716d23707740b7cec7c891ef6b8efab56

See more details on using hashes here.

Supported by

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