2012-04-05 17 views
4

django.templateのコンテキストを使用すると、少し混乱します。django.templateを使用する際のトラブルunittestのコンテキスト

Pythonシェルで、次の作品:

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

私はユニットテストに非常に同じコードを使用すると、私は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' 

ユニットテストは次のようになります。

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では動作しない理由を知っている人はいますか?私はすべてのヒントを感謝します。

from decimal import * 

は "悪いもの" は、このLIBはあまりにContextオブジェクトを持っている:

+0

最初の例はどのようなシェルで実行されますか?これは働く設定(DJANGO_SETTINGS_MODULE)が必要なので、あなたがあなたのユニットテストで欠けているものかもしれません。 –

+0

シェルのプロジェクトディレクトリ内でこのコマンドを使用します: python2.7 manage.pyシェル – Jingo

+0

ユニットテスト?あなたは同じ文脈でそれを実行する必要があります –

答えて

7

OK、私は解決策を得ました。 お読みいただきありがとうございます!

+1

保存時間、男 –

+0

乾杯:)!それがあなたにいくつかの時間と神経を救ってくれて良かったです。 – Jingo

関連する問題