0
我有了这个功能:如何在不提供模板路径的情况下测试使用get_template的这个函数?
def _render(object, template, context_name=None, classes=None):
"""
Helper function that execute the form/field actual rendering.
"""
if not context_name:
context_name = 'object'
template = get_template(template)
c = {
context_name: object,
'classes': classes,
}
return template.render(Context(c))
我要测试,但我不想提供我的文件系统中的任何现有的模板只是一个“虚拟”一个像IE。 input_chunk
:
class RenderCustomChunk(TestCase):
"""
The ``_render()`` class should return a fully rendered html code
based on the given template chunk and parameters passed
with the rendering function ie. classes.
"""
def setUp(self):
self.test_object = 'Test Object'
self.test_template_name = 'TestTemplate.html'
self.input_chunk = u'<p>{{ object }}</p>'
self.render_output = u'<p>%s</p>' % self.test_object
def test_should_render_custom_object(self):
self.assertEqual(forms._render(self.test_object, self.test_template_name),
self.render_output)
有没有什么优雅的方法可以做到这一点?
,这将只是把责任推和我还是不能够测试函数的用法与模板路径,而不是模板实例,所以这个解决方案“不要去”。我想过很多解决方案,包括从这个帮手中剥离get_template。但我正在寻找一个优雅的,也许是模拟相关的 - 这就是为什么我发布了一个问题 - 我不在这里寻找容易的东西;) – bx2 2010-12-15 19:06:12
罗杰说。所以你想用模板路径来测试函数。这是否意味着您想要测试get_template功能还是仅仅_render? get_template在其核心使用file = open(path),所以我认为使用“虚拟”文件是不可能的。你必须嘲笑函数中的某个点来返回你的虚拟文件内容,而不是真正的open()。没有修改_render函数的清洁解决方案可能是模拟测试中的get_template函数。你怎么看?更新与示例:) – 2010-12-17 00:24:45
你有没有达到这个底部?如果您不是测试get_template函数本身(无论它是否通过模板加载器成功检索文件),那么嘲笑get_template函数应该可以解决您的问题。 – 2010-12-22 08:44:17