Django - 编写测试:单元测试传递给通用视图的额外变量
Django - Writing Tests: Unit testing extra variables passed to generic views
我想知道是否有办法使用 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
好吧,我终于想通了。很简单:
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)
我想知道是否有办法使用 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
好吧,我终于想通了。很简单:
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)