麻烦在unittest中使用django.template上下文

时间:2012-04-05 15:58:38

标签: python django unit-testing django-1.3

当我使用django.template中的Context时,我遇到了一个令人困惑的情况。

以下适用于python shell:

>>> from django.template import Context, Template
>>> b=Template('TEST').render(Context())
>>> print b
TEST

当我在单元测试中使用相同的代码时,我得到了以下错误:

Traceback (most recent call last):
  File "/newsletterapi/tests.py", line 25, in setUp
    b = Template('TEST').render(Context())
  File "/opt/python2.7/lib/python2.7/site-packages/django/template/base.py", line 121, in render
    context.render_context.push()
AttributeError: 'Context' object has no attribute 'render_context'

unittest看起来像这样:

from django.test import TestCase
from myproject.newsletterapi.models import Newsletter
from django.utils.termcolors import colorize
from django.db import IntegrityError
from django.template import Template, Context
import random
import datetime
from decimal import *
import string


class NewsletterTest(TestCase):

    def setUp(self):
        b = Template('TEST').render(Context()) # this is line 25
        self.newsletter = Newsletter(body=b)
        self.newsletter.save()

### ... continues here

有没有人知道为什么这在shell中有效但在unittest中没有?我很欣赏每一个提示。

1 个答案:

答案 0 :(得分:7)

好的,我得到了解决方案:

from decimal import *

是坏的一个"这个lib也有一个Context对象。 感谢所有人阅读!