我一直在寻找一种测试jinja2模板的方法,但我只找到了如何测试传递给模板的变量的相关内容:
如何测试传递给jinja2模板的变量换句话说,我想测试模板中使用的逻辑是否生成了预期的输出。
我曾考虑过创建一个“黄金”文件,以便比较生成的文件和黄金文件,但由于可能性太多,这将需要太多的“黄金”文件。
还有其他的想法吗?
我一直在寻找一种测试jinja2模板的方法,但我只找到了如何测试传递给模板的变量的相关内容:
如何测试传递给jinja2模板的变量换句话说,我想测试模板中使用的逻辑是否生成了预期的输出。
我曾考虑过创建一个“黄金”文件,以便比较生成的文件和黄金文件,但由于可能性太多,这将需要太多的“黄金”文件。
还有其他的想法吗?
为什么不在测试中将模板渲染为字符串,然后检查渲染出的模板是否正确呢?
类似这样:
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
我不确定如何计算覆盖率。