Python 为什么可以';测试是否解决了正确的通用视图?
我想进入TDD。根据哈利·珀西瓦尔的书,我想一步一步地走。所以我的第一个单元测试应该是检查Python 为什么可以';测试是否解决了正确的通用视图?,python,django,unit-testing,testing,tdd,Python,Django,Unit Testing,Testing,Tdd,我想进入TDD。根据哈利·珀西瓦尔的书,我想一步一步地走。所以我的第一个单元测试应该是检查 found = resolve("/") 真正调用正确的函数。所以我做了这个断言: self.assertEqual(found.func, ListView.as_view()) 但它告诉我: AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60> Assert
found = resolve("/")
真正调用正确的函数。所以我做了这个断言:
self.assertEqual(found.func, ListView.as_view())
但它告诉我:
AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60>
AssertionError:!=
那么为什么函数不匹配呢?ListView.as\u view()
在每次调用时都会生成新的视图函数对象。因此,url.py
中生成的函数与测试中生成的函数不同
您可以在views.py
中一次性创建视图函数,并在url.py
和tests.py
中引用它:
视图.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
url.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
测试.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
ListView.as_view()
在每次调用时生成新的视图函数对象。因此,url.py
中生成的函数与测试中生成的函数不同
您可以在views.py
中一次性创建视图函数,并在url.py
和tests.py
中引用它:
视图.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
url.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
测试.py
home_view = ListView.as_view()
url(r'^$', views.home_view, name='home'),
self.assertEqual(found.func, views.home_view)
您可以检查
\uuuuu类
():
您可以检查
\uuuuu类
():
非常感谢。与@alecxe的建议相比,这样做有什么好处?如果您的项目中只有一个
ListView
,那么@alexce的建议是完美的。但是如果有几个ListView
s,并且您想要区分它们,那么我的方法会更好。谢谢。与@alecxe的建议相比,这样做有什么好处?如果您的项目中只有一个ListView
,那么@alexce的建议是完美的。但是如果有几个ListView
s,并且您想要区分它们,那么我的方法会更好。