gpt4 book ai didi

python - 如何测试自定义 Django 表单清理/保存方法?

转载 作者:太空狗 更新时间:2023-10-29 21:46:18 25 4
gpt4 key购买 nike

大多数时候我必须更改/扩展默认的表单保存/清理方法。但是我不太确定如何测试自定义保存/清理方法。

大多数时候我的测试是这样的:

response = self.client.post(reverse('example:view_name'), kwargs={'example, self.example'})
self.assertEqual(200, response.status_code)
self.assertTemplateUsed('example.html', response)

使用 Django 的 TestCase 类中的 self.client.post 来捕获响应是不够的,而且绝对不能覆盖/测试自定义保存和清理。

您测试表单的做法是什么?在我看来,我上面所做的是错误的,因为它更像是一个通过 View 到达表单的集成测试。

最佳答案

直接在测试中创建表单,并调用is_valid method (cleanis_valid 调用);检查它是否正确验证。 save 方法也是如此。

例如:

from django.contrib.auth.forms import (UserCreationForm, ...)

...

class UserCreationFormTest(TestCase):

def test_user_already_exists(self):
data = {
'username': 'testclient',
'password1': 'test123',
'password2': 'test123',
}
form = UserCreationForm(data)
self.assertFalse(form.is_valid())
self.assertEqual(
form["username"].errors,
[force_text(User._meta.get_field('username').error_messages['unique'])])

(以上代码来自django源码- django/contrib/auth/tests/test_forms.py)


顺便说一句,assertTemplateUsed 的参数是 response, template_name, ...,而不是 template_name, response, ...

问题中代码的最后一行应该是:

self.assertTemplateUsed(response, 'example.html')

关于python - 如何测试自定义 Django 表单清理/保存方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937042/

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