Я пишу тесты для приложения Колбы, который имеет примерно следующую организацию:шаблонов, когда модульное тестирование приложения КОЛБЫ
/myapplication
runner.py
/myapplication
__init__.py
/special
__init__.py
views.py
models.py
/static
/templates
index.html
/special
index_special.html
/tests
__init__.py
/special
__init__.py
test_special.py
В частности, я хочу, чтобы проверить, что special
модуля работает, как ожидался.
Я определил следующее:
в
special/views.py
:mod = Blueprint('special', __name__, template_folder="templates") @mod.route('/standard') def info(): return render_template('special/index_special.html')
в
myapplication/__init__.py
:app = Flask(__name__) def register_blueprints(app): from special.views import mod as special_blueprint app.register_blueprint(special_blueprint, url_prefix='/special') register_blueprints(app)
в
myapplication/tests/test_special.py
class TestSpecial: @classmethod def create_app(cls): app = Flask(__name__) register_blueprints(app) return app @classmethod def setup_class(cls): cls.app = cls.create_app() cls.client = cls.app.test_client() def test_connect(self): r = self.client.get('/standard') assert r.status_code == 200
В то время как само приложение работает отлично, блок-тест test_connect
терпит неудачу с TemplateNotFound: special/index_special.html
исключением.
Как я могу проверить тесты, где найти соответствующие шаблоны? Обходя рендеринг шаблонов с помощью Flask-testing это не вариант ...
Использование 'template_folder' аргумент не рекомендуется, получается: шаблоны могут относиться к некоторым маршрутам, которые не будут должным образом сконфигурированы. Использование фабричного подхода, который вы описываете, - это путь, при условии, что чертежи правильно определены (и смешивание чертежей со стандартным способом '@ app.route' задает проблемы ...) –