如何对jinja2模板逻辑进行单元测试?

时间:2017-02-07 12:36:27

标签: python unit-testing templates jinja2

我一直在寻找一种单元测试jinja2模板的方法。我已经做了一些研究,但我唯一能找到的就是如何测试传递给模板的变量: how to unittest the template variables passed to jinja2 template from webapp2 request handler

换句话说,我想测试模板中使用的逻辑是否产生了预期的输出。

我以为我可以创建一个“黄金”文件,这样我就可以将生成的文件与黄金文件进行比较,但由于可能性很多,这需要太多“黄金”文件。

还有其他想法吗?

1 个答案:

答案 0 :(得分:3)

为什么不在测试中简单地将模板渲染为字符串,然后检查渲染模板是否正确?

与此类似的东西:

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

我不知道如何计算报道。