我想知道什么是单元测试有道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
属性是视图的一部分,它影响它的行为,另一方面,它只被第三方代码使用。
我肯定会测试它,但我的问题是,如果这应该在**单元测试**或集成/系统测试中进行测试。因为这个属性只是第三方代码的某种“预设”,所以我不确定它适合在单元测试中测试,它应该尽可能少地依赖。 – rubick
这取决于你。如果你有一个单独的集成测试套件,那么检查那里的列表排序行为可能会更好,因为这可能只能通过修改第三方代码来实现。单元测试'UserListView'类中存在的属性将毫无意义,因为它会错过最明显的失败模式。 – wim
我有一个单独的硒测试套件,所以我可以在那里测试它。所以如果我理解正确的话,我不需要单元测试类的属性,除非它们包含某种逻辑(例如列表理解),对吧? – rubick