class TestsUrls(SimpleTestCase):
def test_index_url_is_resolved(self):
url = reverse('index')
self.assertEquals(resolve(url).func, index)
我正在尝试单元测试 url 以查看它是否返回预期的视图。即使看起来函数相同,此断言也会失败。我使用的是基于函数的视图,而不是基于类的视图。这和它有什么关系吗?
AssertionError: <function index at 0x11db7cb70> != <function index at 0x11d860ae8>
目前还不清楚你是如何得到index
的,但resolve(url).func
返回了作为函数的 python对象的实例。python 中的所有内容都是对象,也是函数,因此您可以在内存中得到一个实例。比较这两个对象时,您是在比较同一函数的不同实例。如您所见,它们在内存中的地址是不同的。
因此,与其直接比较它们,不如比较它们的名称和模块:
f = resolve(url).func
self.assertEqual(f.__name__, index.__name__)
self.assertEqual(f.__module__, index.__module__)