Python 我应该测试视图';单元测试中的属性?

Python 我应该测试视图';单元测试中的属性?,python,django,unit-testing,selenium,Python,Django,Unit Testing,Selenium,我想知道什么是单元测试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

我想知道什么是单元测试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\u queryset
方法进行单元测试。这给了我这个视图100%的覆盖率,但是我是否也应该测试,例如,单元测试中的默认顺序?或者,是否应仅在集成/系统测试中进行测试(例如,使用Selenium或Django的客户端)


一方面,
ordering
属性是视图的一部分,它影响视图的行为,另一方面,它只被第三方代码使用。

在我看来,是的,您应该为此添加一个测试。一方面,您可以打赌Django已经有了一个测试来确保这个属性按照广告的方式工作(Django有很好的测试覆盖率)

然而,我的推理是这样的:假设上游
ListView
决定将该属性的名称更改为其他名称。比如说,他们将其重命名为
list\u ordering

快进7个月后,您将增加Django的版本号,以尝试一些闪亮的新功能。编写
UserListView
现在是一个遥远的记忆。作为一名开发人员,您希望知道您要求的默认顺序在较新版本的Django中已停止工作,而此处失败的测试将向您表明这一点—它会将注意力吸引到需要立即更新的代码的某些区域


当然,在升级第三方库时,我们应该仔细阅读发行说明,但最好有直接与您对话的测试

我肯定会对它进行测试,但我的问题是,这应该在单元测试还是集成/系统测试中进行测试。因为这个属性只是第三方代码的某种“预设”,所以我不确定它是否适合在单元测试中测试,单元测试应该使用尽可能少的依赖项。这取决于您。如果您有一个单独的集成测试套件,那么最好检查那里的列表排序行为,因为这可能只能通过更改第三方代码来打破。对
UserListView
类中存在的属性进行单元测试是毫无意义的,因为它会错过最明显的故障模式。我有一个单独的Selenium测试套件,因此可以在那里进行测试。所以如果我理解正确,我不需要单元测试类属性,除非它们包含某种逻辑(例如列表理解),对吗?