Python 如何在Django中使用render_to_响应进行渲染后比较字符串?

Python 如何在Django中使用render_to_响应进行渲染后比较字符串?,python,django,templates,render,Python,Django,Templates,Render,我想重构许多与Django编写的HTML相关的模板文件。 这些文件杂乱无章,由复制和粘贴组成。 由于我们的项目将很长,这笔技术债务应该退还 因此,我想在重构前后编写测试 我只想比较这些渲染,这里不需要上下文,但是为测试创建上下文让我感到厌烦,因为有很多模板文件。 所以我创建了一个上下文,它总是将Hoge作为dummy返回,并且在shell上运行良好 class X(Context): def __getitem__(self, key): return "Hoge" t =

我想重构许多与Django编写的HTML相关的模板文件。 这些文件杂乱无章,由复制和粘贴组成。 由于我们的项目将很长,这笔技术债务应该退还

因此,我想在重构前后编写测试

我只想比较这些渲染,这里不需要上下文,但是为测试创建上下文让我感到厌烦,因为有很多模板文件。 所以我创建了一个上下文,它总是将Hoge作为dummy返回,并且在shell上运行良好

class X(Context):
   def __getitem__(self, key):
       return "Hoge"

t = Template("b{{ m }}a")
t.render(X()) #-> bHogea
然而,当我在与测试相关的文件中使用类似的方法render_to_string时,它发出VariableDoesNotExist异常。 当然,在shell上,render_to_字符串工作得很好

似乎django.template.base.Variable.\u resolve\u lookup发生异常,我将返回前一个上下文X的方法分配给\u resolve\u lookup。像下面这样

Variable._resolve_lookup = lambda him, context: X()
-我知道这种方法很糟糕,但我的目的只是测试比较渲染效果 然而,在那之后,很快就发生了以下异常

django.core.urlresolvers.NoReverseMatch: Reverse for 'xxx_list' with arguments '()' and keyword arguments
我还知道这些异常发生在模板文件中,该文件需要Django的响应

然后我听到这里。 我应该做什么?
我应该一步一步地测试吗?

上下文可能包含字符串,但可能包含任何类型的数据结构。一些模板标签可能会作用于这些标签。不能只提供一个伪值。您需要为每个模板确定他们在其上下文中的期望,并提供相应的示例。谢谢。我已经意识到这不是不可能的,但从你的言行来看太难了。当然,为了将其归档,我必须给这个类提供一些过程或复杂的数据结构。因此,它可能会很枯燥,代码也会很肮脏。我试着寻找另一种方式。谢谢