如何在Django中测试适当的模型窗体和视图

如何在Django中测试适当的模型窗体和视图,django,unit-testing,Django,Unit Testing,是否需要为ModelForm创建一个测试,如下所示?原因是实际上没有代码 class-HouseForm(forms.ModelForm): 类元: 模型=房子 排除=['user',] 字段=['面积','楼层数',] 因此,唯一要测试的部分就是检查排除和包含字段是否没有公共字段。还要测试exclude和include是否具有模型的所有字段,而不是更多字段 这有意义吗 另一方面,我想为下面的视图编写一个单元测试。它使用上面的模型形式 在某种意义上,不使用Selenium之类的功能测试工具就可

是否需要为
ModelForm
创建一个测试,如下所示?原因是实际上没有代码

class-HouseForm(forms.ModelForm):
类元:
模型=房子
排除=['user',]
字段=['面积','楼层数',]
因此,唯一要测试的部分就是检查
排除
包含
字段是否没有公共字段。还要测试
exclude
include
是否具有模型的所有字段,而不是更多字段

这有意义吗

另一方面,我想为下面的视图编写一个单元测试。它使用上面的模型形式

在某种意义上,不使用Selenium之类的功能测试工具就可以编写一个真正的单元测试吗?关键是我不知道如何在视图上传递一些字段值

@需要登录\u
def更新或创建房屋(请求,房屋id=无):
如果房屋id:
house=request.user.house\u set.get(pk=house\u id)
其他:
房子=没有
如果request.method==“POST”:
form=HouseForm(request.POST,instance=house)
如果form.is_有效():
结果=表单.save(提交=False)
result.user=request.user
result.save()
返回重定向('houses-viewall')
其他:
打印表单错误
其他:
表单=房屋表单(实例=房屋)
返回渲染(请求'housemgm/edit_house.html',{'form':form,'house':house,})
最后一个问题:在同一个视图中具有编辑和创建功能是一个好的设计吗?或者我应该把它们分成两部分

为了完整起见,模型是

class House(models.Model):
面积=模型。FloatField()
所有者=型号。外键(用户)
num_floors=models.IntegerField(默认值=1)

首先,不要测试Django本身提供的东西。如果您的模型表单中没有任何自定义代码,那么不要专门测试它:Django已经对模型表单的功能进行了良好的测试

要测试您的视图,可以使用内置的,用于模拟视图上的get和post。然后,您可以在测试前后对响应的内容以及数据库的状态进行断言


最后,是的,这是视图的一个好模式。

我不清楚如何通过测试客户端将表单的值传递给视图。但在最后,它得到了回答。所以我只需要使用client.get或client.post的数据参数。