我想重构与Django编写的HTML相关的许多模板文件。 这些文件很乱,包含“复制和粘贴”。 由于我们的项目将会很长,所以应退回这份“技术债务”。
因此,我想在重构之前和之后编写测试。
我只想比较这些渲染,这里不需要上下文,因为有许多模板文件,因此为测试创建上下文让我厌烦。 所以我创建了上下文,它始终将“Hoge”作为虚拟返回,并且在shell上运行良好。
class X(Context):
def __getitem__(self, key):
return "Hoge"
t = Template("b{{ m }}a")
t.render(X()) #-> bHogea
但是当我在与test相关的文件中使用类似的方法(render_to_string)时,它会发出“VariableDoesNotExist”异常。 当然,在shell上,“render_to_string”效果很好。
似乎“django.template.base.Variable._resolve_lookup”出现异常,我分配方法,将前一个Context“X()”返回给_resolve_lookup。如下所示。
Variable._resolve_lookup = lambda him, context: X()
( - 我知道这种方式非常糟糕,但我的目的只是测试比较效果图) 但是,在此之后,很快就会出现以下异常。
django.core.urlresolvers.NoReverseMatch: Reverse for 'xxx_list' with arguments '()' and keyword arguments
我也知道这些例外发生在模板文件中,需要Django的一些响应。
然后我在这里听到了。 我该怎么办? 我应该尝试逐步测试吗?