Мокинг MongoDB для тестирования REST API, разработанный во Flask
У меня есть приложение Flask, в котором REST API создаются с использованием flask_restful с серверной частью MongoDB. Я хочу написать функциональные тесты с использованием pytest и mongomock для имитации MongoDB для тестирования API, но не могу это настроить. Может ли кто-нибудь подсказать мне пример, где я могу добиться того же? Вот приспособление, которое я использую в файле conftest.py:
@pytest.fixture(scope='module')
def test_client():
# flask_app = Flask(__name__)
# Flask provides a way to test your application by exposing the Werkzeug test Client
# and handling the context locals for you.
testing_client = app.test_client()
# Establish an application context before running the tests.
ctx = app.app_context()
ctx.push()
yield testing_client # this is where the testing happens!
ctx.pop()
@pytest.fixture(autouse=True)
def patch_mongo():
db = connect('testdb', host='mongomock://localhost')
yield db
db.drop_database('testdb')
disconnect()
db.close()
и вот тестовая функция для тестирования почтового запроса на создание пользователя:
def test_mongo(test_client,patch_mongo):
headers={
"Content-Type": "application/json",
"Authorization": "token"
}
response=test_client.post('/users',headers=headers,data=json.dumps(data))
print(response.get_json())
assert response.status_code == 200
Проблема в том, что вместо использования testdb pytest создает пользователя в производственной базе данных. что-то не хватает в конфигурации?