Как проверить эту функцию, которая использует get_template без указания пути к шаблону? - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть эта функция:

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))

Я хочу протестировать его, но я не хочу предоставлять какой-либо существующий шаблон в моей файловой системе, просто "виртуальный", например, т.е. 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)

Есть ли какой-нибудь элегантный способ сделать это?

1 Ответ

1 голос
/ 15 декабря 2010

Поскольку я не думаю, что вы пытаетесь протестировать функцию get_template (в конце концов, вы используете «виртуальный» файл, а для get_template это не то), другое решение - смоделировать get_template.1002 *

или встроенный, если он выглядит чище в setUp ()

class RenderCustomChunk(TestCase):
    def setUp(self):
        self.test_object = 'Test Object'
        self.test_template_name = 'TestTemplate.html'

        self.render_output = u'<p>%s</p>' % self.test_object

        # this is a unit test for _render, not get_template.
        forms.get_template = lambda x: Template(u'<p>{{ object }}</p>')

    def test_should_render_custom_object(self):
        self.assertEqual(forms._render(self.test_object, self.test_template_name),
                         self.render_output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...