Using mongomock to mock database requests for Flask app

300 Views Asked by At

When testing my Flask application with Pytest I run into connection problems with the database since it is not running. I read that mongomock is often used to mock requests to the database but I am having trouble implementing it to the existing test environment.

For reference my database.py file looks like this:

from flask_pymongo import PyMongo

mongo = PyMongo()

My app.py which is responsible for creating the Flask server looks like this:

from flask import Flask, send_from_directory

def create_app(config_class=BaseConfig):
    app = Flask(__name__)
    app.config.from_object(config_class)

    from .database import mongo

    mongo.init_app(app)
    return app


app = create_app()

Testing different REST endpoints works fine but as soon as a connection to the database needs to be established it times out which makes sense. How do I integrate mocking into my test file?

import json
import pytest

from src.app import app
from src.database import mongo

MIMETYPE = 'application/json'
headers = {
    "Content-Type": MIMETYPE
}

@pytest.fixture
def client():
    app.testing = True
    yield app.test_client()


def test_get_customers(client):
    response = client.get('/api/v1/customers')
    assert response.status_code == 200
    assert response.mimetype == MIMETYPE
    for item in response.json:
        assert item["_id"]
        assert item["name"]
0

There are 0 best solutions below