2015-06-08 41 views
0

我想知道是否有方法使用Django的測試客戶端來驗證從通用視圖傳遞的額外變量是否正確。Django - 編寫測試:單元測試傳遞給通用視圖的額外變量

例如,給定以下代碼,我將如何編寫測試list_year()以確保模板從視圖中接收當前年份,或者爲purchase_yrs()確保正確的信息從模型管理器傳遞?

我似乎無法找到一種方法將其從response.context屬性中提取出來。

class PurchaseIndex(generic.ListView): 

    def get_queryset(self): 
     current_date = datetime.now().year 
     return Purchase.objects.filter(purchase_date__year=current_date).reverse() 

    def purchase_yrs(self): 
     return Purchase.purchase_years.purchase_years_list() 

    def list_year(self): 
     return datetime.now().year 
+0

我要指出,我已經通過了一個測試用:'self.assertInHTML( 「

購買指數 - 2015年

」,STR(response.content))',但我希望能找到一個這種方式不會強迫我承諾任何特定的模板格式。 –

回答

0

好吧,我終於想出了這一個。很簡單:

from django.test import TestCase 
from views import PurchaseIndex 

class IndexPageTest(TestCase): 

    def test_current_purchase_index_displays_year(self): 
     context = PurchaseIndex.list_year(self) 
     self.assertEqual(2015, context) 

    def test_current_shipments_included_in_current_purchase_index(self): 
     context = PurchaseIndex.purchase_yrs(self) 
     self.assertIn(2015, context) 
     self.assertIn(2014, context)