Я пишу юнит-тесты для API, который подключается к MongoDB.В моем модуле API это выглядит так:
from flask import Flask, jsonify
from MyApp import MongoData
api = Flask(__name__)
DB_CONN = MongoData()
@api.route('/bla', methods=['GET'])
def alive():
return jsonify({'response': true})
У меня проблема при импорте этого модуля в мой unittest.Я хочу смоделировать коллекцию из MongoData () со специальным классом, который использует mongomock.Проблема в том, что я не могу смоделировать DB_CONN при импорте в тестах:
from MyApp import api
Я пытался сделать это с помощью макета:
DB_CONN = MockMongoData()
with mock.patch('MyApp.api.DB_CONN', DB_CONN):
from MyApp import api
, но он все еще пытается подключиться к базе данных какуказано в файле конфигурации.
Любой совет, как смоделировать DB_CONN из модуля MyApp.api?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Это будет работать:
import sys
from MyApp import MongoData, MockMongoData
sys.modules['MyApp'].MongoData = MockMongoData
from MyApp import api
Но есть ли лучший (более питонический) способ сделать это?