我应该在单元测试中测试视图的属性吗?

时间:2017-03-06 22:42:14

标签: 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.all().annotate(
            full_name=Concat('first_name', Value(' '), 'last_name')
        )
        return super().get_queryset()

我目前正在对get_queryset方法进行单元测试。这让我100%覆盖了这个视图,但是我是否还要测试单元测试中的默认排序?或者应该仅在集成/系统测试中进行测试(例如使用Selenium或Django的客户端)?

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

1 个答案:

答案 0 :(得分:1)

在我看来,是的,你应该为此添加一个测试。一方面,你可以打赌,Django已经有一个测试,以确保这个属性像宣传的那样工作(Django有非常好的测试覆盖率)。

但是,我的推理是这样的:假设上游ListView决定将该属性的名称更改为其他名称。比如,他们将其重命名为list_ordering

快进7个月之后,你会碰到Django的版本号以尝试一些闪亮的新功能。写UserListView现在是一段遥远的记忆。作为开发人员,您想知道您要求的默认顺序已停止在较新版本的Django中工作,并且此处的失败测试将向您显示 - 它会引起您现在需要更新的代码区域的注意。 / p>

当然,我们应该在升级第三方库时仔细阅读发行说明,但最好还是直接与您交流测试!