Django中基于类视图(CBV)的URL解析测试报错,求解决?
Django CBV URL解析测试错误解决方法
问题原因
你的测试代码里用views.UpdateHealth()创建了类实例,去和resolve(url).func做对比,但resolve(url).func实际是UpdateHealth.as_view()返回的视图函数——一个是类实例,一个是函数,类型不匹配导致断言失败。
修正后的测试代码
修改tests.py中的测试方法:
def test_health_hub_update_url_is_resolved(self): url = reverse('HealthHub:health_hub_update') self.assertEqual(resolve(url).func.view_class, views.UpdateHealth)
Django类视图通过as_view()转换成可调用的视图函数,这个函数自带view_class属性,指向对应的类视图本身,通过对比func.view_class和视图类,就能验证URL解析是否正确。
额外提示(影响视图功能)
你的views.py中get方法里stats = HealthStats直接引用了模型类,而非当前用户的具体实例,这会导致后续stats.user、stats.weight等调用出错,建议改为获取当前用户的健康统计实例:
# 假设HealthStats通过user外键关联User模型 stats = HealthStats.objects.get(user=request.user)
内容的提问来源于stack exchange,提问作者BenD2525
相关产品推荐
相关产品推荐

