是否需要为ModelForm
创建测试,如下所示?原因是实际上没有代码。
class HouseForm(forms.ModelForm):
class Meta:
model = House
exclude = ['user',]
fields = ['area', 'num_floors',]
因此,唯一要测试的部分就是检查exclude
和include
字段是否没有公共字段。另外,要测试exclude
和include
是否包含模型的所有字段,而不是更多。
有意义吗?
另一方面,我想为以下视图编写单元测试。它利用了上面的ModelForm。
是否有可能在不使用某些工具(如Selenium)的情况下编写真正的单元测试,这在某种意义上是功能测试?关键是我不知道如何在视图上传递一些字段值。
@login_required
def update_or_create_house(request, house_id=None):
if house_id:
house = request.user.house_set.get(pk=house_id)
else:
house = None
if request.method=="POST":
form = HouseForm(request.POST, instance=house)
if form.is_valid():
result = form.save(commit=False)
result.user = request.user
result.save()
return redirect('houses-viewall')
else:
print form.errors
else:
form = HouseForm(instance=house)
return render(request, 'housemgm/edit_house.html', {'form':form, 'house':house,})
最后一个问题:在同一视图中编辑和创建功能是一个好的设计吗?或者我应该将它们分成两部分?
为了完整起见,模型是
class House(models.Model):
area = models.FloatField()
owner = models.ForeignKey(User)
num_floors = models.IntegerField(default=1)
答案 0 :(得分:6)
首先,不要测试Django本身提供的东西。如果您的模型表单中没有任何自定义代码,请不要对其进行专门测试:模型表单的功能通常已经过Django测试。
要测试您的视图,您可以使用内置的test client模拟视图上的GET和POST。然后,您可以在测试之前和之后对响应的内容以及数据库的状态进行断言。
最后,是的,这是一个很好的视图模式。