gpt4 book ai didi

django - 如何在 Django 中正确测试 ModelForms 和 View

转载 作者:行者123 更新时间:2023-12-02 19:31:16 27 4
gpt4 key购买 nike

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

class HouseForm(forms.ModelForm):
class Meta:
model = House
exclude = ['user',]
fields = ['area', 'num_floors',]

因此,唯一要测试的部分就是检查 excludeinclude 字段是否没有公共(public)字段。还要测试 excludeinclude 是否具有模型的所有字段,仅此而已。

有道理吗?

另一方面,我想为以下 View 编写单元测试。它利用了上面的 ModelForm。

是否有可能在不使用像 Selenium 这样的工具(某种意义上是功能测试)的情况下编写真正的单元测试?关键是我不知道如何在 View 上传递一些字段值。

@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,})

最后一个问题:在同一个 View 中具有编辑和创建功能是一个好的设计吗?或者我应该把它们分成两部分?

只是为了完整性,该模型是

class House(models.Model):
area = models.FloatField()
owner = models.ForeignKey(User)
num_floors = models.IntegerField(default=1)

最佳答案

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

要测试您的 View ,您可以使用内置 test client它在您的 View 上模拟 GET 和 POST。然后,您可以对响应的内容以及测试前后的数据库状态做出断言。

最后,是的,这是一个很好的 View 模式。

关于django - 如何在 Django 中正确测试 ModelForms 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26136214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com