我想知道单元测试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属性是视图的一部分,它影响视图的行为,另一方面,它仅由第三方代码使用。
发布于 2017-03-06 22:50:34
在我看来,是的,你应该为此增加一个测试。一方面,可以打赌Django已经有了一个测试,以确保这个属性能够像广告中所显示的那样工作(Django有很好的测试覆盖率)。
但是,我的推理是这样的:假设上游ListView决定将该属性的名称更改为其他属性。比如说,他们把它改名为list_ordering。
快进7个月后,您可以使用Django的版本号来尝试一些闪亮的新特性。写UserListView现在已经是一个遥远的记忆了。作为一名开发人员,您想知道您所要求的默认顺序在较新版本Django中已经停止工作,这里的一个失败的测试将向您展示这一点--它将提请您注意您的代码中需要现在更新的某些区域。
当然,在升级第三方库时,我们应该仔细阅读发行说明,但是更好的是有直接与您交谈的测试!
https://stackoverflow.com/questions/42636982
复制相似问题