为什么我无法测试是否解决了正确的通用视图?

时间:2015-01-02 00:13:52

标签: python django unit-testing testing tdd

我试图进入TDD。按照Harry Percival的书,我想走很小的步。所以我的第一次单元测试应该是检查......

found = resolve("/")

真的称之为正确的功能。所以我做了这个断言:

self.assertEqual(found.func, ListView.as_view())

但它告诉我:

AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60>

那么为什么函数不匹配?

2 个答案:

答案 0 :(得分:2)

ListView.as_view()在每次调用时生成新的视图函数对象。因此,urls.py中生成的函数与测试中生成的函数不同。

您可以在views.py中创建一次视图功能,并在urls.pytests.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)