【发布时间】:2018-08-09 09:14:20
【问题描述】:
我是 TDD 新手,正在尝试在 Django 项目中应用 TDD 实践。
基于伦敦学校的TDD工作流程,我在工作,从外到内,视图层,表单层和模型层。在表单层,我计划构建一个模型表单,其中包含一些 自定义验证方法。我认为,基于 TDD,我只需要测试我的自定义方法, 不碰:
- 由 Django 提供的整个 ModelForm 逻辑,这是一个经过良好测试的依赖项。
- 较低的模型层,尚不存在。
但是我该怎么做呢?例如,使用以下模型形式:
from django import forms
from app import models
class MyModelForm(forms.ModelForm):
class Meta:
model = models.MyModel
fields = ("field1", "field2")
def clean_field1(self):
# custom cleaning logic
def clean_field2(self):
# custom cleaning logic
def clean(self):
# custom cleaning logic
-
我如何(或应该)模拟
MyModel?我想出了@patch("app.forms.MyModelForm._meta.model") class FormTest(TestCase): #...但也许这有点疯狂?而且我不确定
Mock的效果如何 对象将使用ModelForm内部逻辑。一方面,所有形式 田野没了,不是吗? 如何对这些自定义方法进行单元测试?通过手动设置
self.cleaned_data?
【问题讨论】:
-
为被测单元打补丁似乎是个坏主意。但是您能否更好地了解您要测试的行为?
-
@jonrsharpe 您好,感谢您的帮助。你认为
MyModel这里属于被测单元?不是低级依赖(意思是表单层依赖模型层)吗?