我用三個應用程序創建了一個小型django項目,現在我正在爲其中一個應用程序編寫測試。我需要在不同的視圖和不同的模板之間傳遞一些信息,但該信息不應該對用戶可見。我的第一個嘗試是將這些信息作爲隱藏字段傳遞給HTML表單,但之後我指出,這並沒有使其完全隱藏。所以,我將這些信息存儲在request.session字典中,並且它沒有問題。在測試中使用django中的會話對象嗎?
這就是說,我的問題出現在測試中。根據django文檔(http://docs.djangoproject.com/en/1.2/topics/testing/),當您在測試過程中必須修改會話字典時,您應該先將它存儲在一個變量中,修改它,然後保存變量。
所以我的測試代碼是這樣的:
class Test_Atacar(TestCase):
fixtures = ["testBase.json"]
def test_attack_without_troops(self):
red_player = Player.objects.get(color=RED)
self.failUnless(red_player != None)
session = self.client.session
session["player_id"] = red_player.id
session.save()
response = self.client.get("/espectador/sadfxc/", follow=True)
但是當我運行了Python manage.py測試,我得到一個AttributeError,說是字典,有保存無屬性()。 我在其他地方閱讀(http://code.djangoproject.com/ticket/11475),我應該嘗試對任何其他URL執行self.client.get之前操縱會話,以便它將成爲一個「真正」的會話,但我一直得到相同的AttributeError。
session.save()不是必需的,並且是無效的。 – 2010-11-23 04:28:01