如何在 Django 的单元测试驱动程序中测试表单的验证逻辑?

发布于 2024-08-20 11:00:02 字数 306 浏览 4 评论 0原文

我想测试表单验证逻辑的 is_valid 部分。在我的测试驱动程序中,我有:

  test_animal = Animal(name="cat", number_paws="4")
  test_animal_form = AnimalForm(instance=test_animal)
  assertEqual(test_animal_form.is_valid(), True)

断言失败,但从我看来,表单中不应该有任何错误。我在表单中没有看到任何验证错误。如果 test_animal 实例在加载到表单中时应该验证,那么这是否可以作为测试用例?

I want to test the is_valid portion of a form's validation logic. In my test driver I have:

  test_animal = Animal(name="cat", number_paws="4")
  test_animal_form = AnimalForm(instance=test_animal)
  assertEqual(test_animal_form.is_valid(), True)

The assertion fails, but from what I see there shouldn't be any errors in the form. I don't see any validation errors in the form. Should this work as a test case if the test_animal instance when loaded into the form should validate?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

徒留西风 2024-08-27 11:00:02

您看到验证错误的原因是验证中未使用实例数据,您必须指定发送到表单的数据。

test_animal = Animal(name="cat", number_paws="4")
test_animal_form = AnimalForm(instance=test_animal)
assertEqual(test_animal_form.is_valid(), False) # No data has been supplied yet.
test_animal_form = AnimalForm({'name': "cat", 'number_paws': 4, }, instance=test_animal)
assertEqual(test_animal_form.is_valid(), True) # Now that you have given it data, it can validate.

The reason you're seeing the validation errors is because instance data isn't used in validation, you have to specify the data being sent to the form.

test_animal = Animal(name="cat", number_paws="4")
test_animal_form = AnimalForm(instance=test_animal)
assertEqual(test_animal_form.is_valid(), False) # No data has been supplied yet.
test_animal_form = AnimalForm({'name': "cat", 'number_paws': 4, }, instance=test_animal)
assertEqual(test_animal_form.is_valid(), True) # Now that you have given it data, it can validate.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文