我试图进入TDD。按照Harry Percival的书,我想走很小的步。所以我的第一次单元测试应该是检查......
found = resolve("/")
真的称之为正确的功能。所以我做了这个断言:
self.assertEqual(found.func, ListView.as_view())
但它告诉我:
AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60>
那么为什么函数不匹配?
答案 0 :(得分:2)
ListView.as_view()
在每次调用时生成新的视图函数对象。因此,urls.py
中生成的函数与测试中生成的函数不同。
您可以在views.py
中创建一次视图功能,并在urls.py
和tests.py
中引用它:
<强> views.py 强>
home_view = ListView.as_view()
<强> urls.py 强>
url(r'^$', views.home_view, name='home'),
<强> tests.py 强>
self.assertEqual(found.func, views.home_view)
答案 1 :(得分:2)
您可以查看__class__
(as it is done under-the-hood for the django debug page):
self.assertEqual(found.func.__class__, ListView)