django - 我应该在 Django 中测试我的通用 DetailView

标签 django unit-testing django-generic-views

我对 TDD 非常陌生,正在尝试通过测试创建我的第一个 Djagno 应用程序。当谈到一般观点时,我有点困惑。我读过几个地方(包括官方文档),每个 View 都应该有与之相关的测试。但我也读到您应该避免测试 Django 内部结构,因为这是不必要的。

所以如果我有这样的 View :

class ClinicView(DetailView):
    model = Clinic
    template_name = "directory/clinic.html"

它使用通用 View 并且工作正常,我应该为它编写一个测试吗?

我的直觉是我不应该这样做,因为我使用通用 View ,但还没有真正找到太多东西来告诉我我的感觉是否正确。对此,最佳实践是什么?或者,如果我将我的代码交给其他人维护,会对我有何期望?我至少应该编写一个测试来确保我的模型和模板存在吗?提前致谢。

最佳答案

您希望避免过度测试。您应该只为自定义逻辑或经常更改的内容编写测试。

例如,如果 Clinic 模型有一个复杂的方法来计算一些结果,您可能需要进行测试以确保它按照您的想法进行操作。

如果您经常更改某些内容,并且其他人可能会进行更改,那么您需要进行测试以确保它在更改后仍然有效。 Django View 已经过测试。除非您向 View 添加一堆自定义逻辑(无论如何您可能应该将其放入模型管理器中),否则没有必要使用自动化测试重复测试它。

测试很棒,我喜欢它!但我讨厌维护它,所以我的目标不是完全覆盖。一旦你用测试覆盖了你的自定义代码,你就会通过测试每一个小片段而获得递减的返回。

我曾经在一家有点疯狂的公司工作,希望我为自动化测试编写测试。不要像他们一样(:

关于django - 我应该在 Django 中测试我的通用 DetailView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508899/

相关文章:

python - 将复选框数据发布到 Django 中的 View

python - 从管理界面删除 ImageField 时出现 Django unicode 错误

java - Hamcrest:测试列表包含一个具有特定值的私有(private)字段的项目

python - django.template.exceptions.TemplateDoesNotExist : registration/login. html

django - 如何在 Django 中使用基于日期的 View

python - Django - 可怕的 'iteration over non-sequence'

django - 如何在 Django View 中获取选择选项值

python - 如何测试在对象实例化期间创建的函数?

java - 如何限制Java ServiceLoader仅加载测试包中定义的服务提供者

django - 基于类的 View Django + Chartit 中的转换函数 View