python - 我应该在单元测试中测试 View 的属性吗?

标签 python django unit-testing selenium

我想知道对 Django View 进行单元测试的正确方法是什么,例如这个:

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% 覆盖了这个 View ,但我是否还应该测试,例如,在单元测试中的默认排序?或者这应该只在集成/系统测试中进行测试(例如使用 Selenium 或 Django 的客户端)?

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

最佳答案

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

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

快进 7 个月后,您提高了 Django 的版本号以尝试一些 Shiny 的新功能。编写 UserListView 现在已成为遥远的内存。作为一名开发人员,您想知道您要求的默认顺序在较新版本的 Django 中已停止工作,并且此处失败的测试将向您表明 - 它会引起您对代码中需要立即更新的某些区域的注意。

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

关于python - 我应该在单元测试中测试 View 的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42636982/

相关文章:

python - 来自其他文件的 flask 路由器

c# - Moq 一个具体的类方法调用

unit-testing - Scala - 为使用数据库连接扩展特征/类的对象/单例编写单元测试

python - Django 新手很难使用模型和可重用的业务逻辑

python - Django模型.参数

django - 在测试中使用 Django 缓存强制连接错误

.net - 多线程单元测试

python - 将多系列词典保存到 Excel

python - 仅从提到关键字的字符串中提取数字

python - django value_list 给出 id 而不是值