2012-04-05 3 views
4

У меня здесь немного запутанная ситуация, когда я использую Context из django.template.Проблема с использованием django.template Контекст в unittest

следующие работы в оболочке Python:

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

Когда я использую тот же код в UnitTest, я получаю follwing Ошибка:

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 

У кого-нибудь есть идея, почему это работает в оболочке, но не в unittest? Я ценю каждый намек.

+0

В какой оболочке работает первый пример? Для этого нужны настройки для работы (DJANGO_SETTINGS_MODULE), так что, возможно, это то, чего вам не хватает в модульном тесте. –

+0

Я использую эту команду внутри моего проекта dir для оболочки: python2.7 manage.py shell – Jingo

+0

И модульный тест? Вам нужно запустить это в том же контексте –

ответ

7

ОК, я получил решение:

from decimal import * 

является «плохим» этой библиотеки есть объект контекста тоже. Спасибо, что прочитали!

+1

Сохранено мое время, человек –

+0

Cheers :)! Приятно видеть, что это сэкономило вам время и нервы. – Jingo