我想知道什么是单元测试Django视图的正确方法,例如:
class UserListView(LoginRequiredMixin, ListView):
model = get_user_model()
template_name = 'users/user_list.html'
ordering = 'last_name'
def get_queryset(self):
self.queryset = self.model.objects.all().annotate(
full_name=Concat('first_name', Value(' '), 'last_name')
)
return super().get_queryset()
我目前正在单元测试get_queryset
方法。这给了我这个视图100%的覆盖率,但是我是否也应该测试,例如,单元测试中的默认顺序?或者应该只在集成/系统测试中进行测试(例如,使用Selenium或Django的客户机)?你知道吗
一方面,ordering
属性是视图的一部分,它影响视图的行为,另一方面,它仅由第三方代码使用。你知道吗
在我看来,是的,你应该增加一个测试。一方面,您可以打赌Django已经有了一个测试来确保这个属性按照广告的那样工作(Django有很好的测试覆盖率)。你知道吗
然而,我的推理是这样的:假设上游
ListView
决定将该属性的名称更改为其他名称。比如说,他们把它改名为list_ordering
。你知道吗快进7个月后,您将增加Django的版本号以尝试一些闪亮的新功能。写
UserListView
现在是遥远的记忆。作为一名开发人员,您希望知道您请求的默认顺序在较新版本的Django中已经停止工作,而这里失败的测试将向您表明这一点—它会引起您对代码中需要立即更新的某些区域的注意。你知道吗当然,在升级第三方库时,我们应该仔细阅读发行说明,但最好是让测试直接与您对话!你知道吗
相关问题 更多 >
编程相关推荐