Как мне смоделировать зависимости модуля views моего приложения Flask при тестировании во флаке?
В качестве минимального примера мое приложение Flask имеет views
модуль как
from flask import render_template
from something import some_service
def home():
foo = some_service.do_thing('bar')
return render_template('index.html', foo=foo)
У меня есть тестовая настройка, как
from application import app
from flask.ext.testing import TestCase
class MyTest(TestCase):
def create_app(self):
app.config['TESTING'] = True
app.config['WTF_CSRF_ENABLED'] = False
return app
def setUp(self):
self.app = app.test_client()
def test_home(self):
rv = self.app.get('/home')
???
Как мне написать test_home
так что он утверждает, что some_service.do_thing('bar')
назывался?
1 ответ
Решение
Вы можете использовать Python mock
на элементах views
модуль путем доступа к нему через application
модуль импортирован в ваш тестовый модуль. Ваш тестовый модуль должен читать что-то вроде:
import application
from flask.ext.testing import TestCase
class MyTest(TestCase):
def create_app(self):
application.app.config['TESTING'] = True
application.app.config['WTF_CSRF_ENABLED'] = False
return application.app
def setUp(self):
self.app = application.app.test_client()
def test_home(self):
mock_service = mock.MagicMock()
application.views.some_service = mock_service
self.app.get('/home')
mock_service.do_thing.assert_called_with('bar')