2017-02-07 6 views
1

Я искал способ модульного тестирования шаблона jinja2. Я уже провел какое-то исследование, но единственное, что мне удалось найти, это связать с тем, как проверить переменные, переданные в шаблон по этой ссылке: how to unittest the template variables passed to jinja2 template from webapp2 request handlerКак я могу модулировать логику шаблона jinja2?

Другими словами, я хотел бы проверить, шаблон генерирует ожидаемый результат и, возможно, некоторую зону покрытия кода?

Я думал, что могу создать «золотые» шаблоны, чтобы сравнить шаблоны, созданные с помощью этих золотых шаблонов, но это было бы слишком много «золотых» шаблонов из-за количества возможностей.

Любые другие идеи?

ответ

2

Почему бы просто не привести шаблон к строке в свой тест, а затем проверить, правильно ли отображен шаблон?

Что-то напоминает формат этого:

import jinja2 

# assume it is an unittest function 
context = { # your variables to pass to template 
    'test_var': 'test_value' 
} 
path = 'path/to/template/dir' 
filename 'tempalte_to_test.tpl' 

rendered = jinja2.Environment(
    loader=jinja2.FileSystemLoader(path) 
).get_template(filename).render(context) 

# `rendered` is now a string with rendered template 
# do some asserts on `rendered` string 
# i.e. 
assert 'test_value' in rendered 

Я не уверен, как рассчитать освещение, хотя.

+0

Благодарим вас за ответ. Я ожидал чего-то более конкретного для проверки логики внутри шаблона. Я имею в виду, что значение, которое я буду утверждать, может быть сгенерировано разными случаями в шаблоне. Проверка только выхода не гарантирует, что поток, который сделал шаблон, - это то, что я ожидал. Но так или иначе, я отвечу на ваш ответ, так как буду использовать его в любом случае. Еще раз спасибо! – Felipe