tam*_*are 36 python django django-models django-testing
在我目前的项目中途,在经历了无数分钟调试的痛苦之后,我决定采用TDD.首先,我计划为每个现有模型编写一组单元测试.但对于只定义属性的模型(即没有其他方法/属性),我不确定我需要测试什么,也不确定.
class Product(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(default='', blank=True)
retails = models.ManyToManyField(Retail, verbose_name='Retail stores that carry the product')
manufacturer = models.ForeignKey(Manufacturer, related_name='products')
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
以产品为例,单元测试应涵盖哪些内容?应该如何涵盖ForeignKey和ManyToManyField?
Fur*_*tor 76
这是我发现有用的文章:http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/.以下是测试内容的一个很好的总结:
对于新测试的开发人员/设计人员来说,另一个常见的挫折是"我应该(或不应该)测试什么?"的问题.虽然这里没有适用于所有地方的硬性规定,但我可以提供一些通用的指导方针来做出决定:
如果有问题的代码是内置的Python函数/库,请不要测试它.例如datetime库.
如果有问题的代码内置在Django中,请不要测试它.示例如模型上的字段或测试内置template.Node如何呈现包含标记.
如果您的模型具有自定义方法,则应通过单元测试对其进行测试.
自定义视图,表单,模板标签,上下文处理器,中间件,管理命令等也是如此.如果您实现了业务逻辑,则应测试代码的各个方面.
因此,对于您的示例,在您编写一些自定义函数之前,实际上没有任何东西可以测试.
在我看来,测试ForeignKey和ManyToManyField链接属于第二类(Django内置的代码),所以我不会测试这些,因为你真的在测试Django是否正常运行.如果您有一个创建产品实例的方法,包括外部关系和M2M,您可以验证数据是否已经创建,即测试您的自定义方法,而不是Django功能.
使用TDD范例,构建测试以验证业务逻辑和设计要求.
| 归档时间: |
|
| 查看次数: |
18431 次 |
| 最近记录: |