He estado buscando una forma de probar una plantilla jinja2 por unidad. Ya realicé algunas investigaciones, pero lo único que pude encontrar estaba relacionado con cómo probar las variables pasadas a la plantilla: cómo realizar una prueba unitaria de las variables de plantilla pasadas a la plantilla jinja2 desde el controlador de solicitudes webapp2
En otras palabras, me gustaría probar si la lógica utilizada dentro de la plantilla está generando un resultado esperado.
Pensé que podía crear un archivo "dorado" para poder comparar los archivos generados con el archivo dorado, sin embargo eso requeriría demasiados archivos "dorados" debido a la cantidad de posibilidades.
¿Alguna otra idea?
Respuestas
3 para la respuesta № 1¿Por qué no simplemente renderizar la plantilla a cadena en su prueba, y luego verificar si la plantilla representada es correcta?
Algo similar a esto:
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
Aunque no estoy seguro de cómo calcular la cobertura.