预期视图函数的 Django url 单元测试比较失败


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__)

最新更新