我一直在寻找一种单元测试jinja2模板的方法。我已经做了一些研究,但我唯一能找到的就是如何测试传递给模板的变量: how to unittest the template variables passed to jinja2 template from webapp2 request handler
换句话说,我想测试模板中使用的逻辑是否产生了预期的输出。
我以为我可以创建一个“黄金”文件,这样我就可以将生成的文件与黄金文件进行比较,但由于可能性很多,这需要太多“黄金”文件。
还有其他想法吗?
答案 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
我不知道如何计算报道。