创建表单测试:测试断言失败时如何查看表单错误

时间:2019-03-05 18:51:44

标签: python django unit-testing

我目前正在尝试为自己的表单创建测试,该测试肯定是有效的,因为我正在我的应用程序中对其进行手动测试,但是在测试中向我展示了我的form.is_valid == False。我不知道自己在测试中做错了什么,有没有办法单独检查每个字段以找出导致测试形式无效的原因?

我的代码:

forms.py

from django.forms import ModelForm
from django import forms

from .models import Comment


class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ['nick', 'rate', 'content']
        widgets = {'nick': forms.HiddenInput()}

test_forms.py

from django.test import TestCase
from django.contrib.auth.models import User
from ..forms import CommentForm


class CommentFormTest(TestCase):

    def test_form(self):
        user = User.objects.create(username='Testowy')
        form_data = {
            'nick': user,
            'rate': '1',
            'content': 'test content',
        }
        form = CommentForm(data=form_data)
        self.assertEqual(form.is_valid(), True)

1 个答案:

答案 0 :(得分:1)

测试断言始终具有一个可选参数(最后一个或msg),以便在断言失败的情况下打印消息。您应该在测试中尽可能多地使用它(除非结果本身很明显),以帮助您确定断言失败的原因:

self.assertTrue(
    form.is_valid(),  
    msg=f"form should have been valid, but contains errors: {form.errors}")

这样,错误将被打印到测试控制台的输出中。