【问题标题】:How to test a customized clean method in Django ModelForm如何在 Django ModelForm 中测试自定义的清理方法
【发布时间】:2020-06-11 04:05:39
【问题描述】:

我有以下 ModelForm

forms.py

class MyModelForm(forms.ModelForm):
    my_file = forms.FileField()
    class Meta:
        model = MyModel

    def clean(self):
        form_file = self.cleaned_data['my_file']
        file_name = form_file.name
        if MyModel.objects.filter(my_file_name=file_name).exists():
            raise forms.ValidationError("This file already exists")

实际上可行,但我需要在自定义的 clean 方法中添加一些单元测试。你能帮我解决这个问题吗?我正在使用 Django 2.0。

提前致谢。

【问题讨论】:

    标签: django python-3.x django-models django-forms


    【解决方案1】:

    使用MultiValueDict生成文件数据

    from django.utils.datastructures import MultiValueDict
    from django.test import TestCase
    from .forms import MyModelForm
    from django.core.files import File
    class MyModelFormTest(TestCase):
        def test_form_clean(self):
            file = File(open('/path/to/myfile', 'rb'))
            files = MultiValueDict({'my_file':[file]})
            form = MyModelForm(files=files)
            self.assertTrue(form.is_valid())
            form.save()
            form_duplicated = MyModelForm(files=files)
            self.assertFalse(form_duplicated.is_valid())
    

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 2014-08-05
      • 2019-08-22
      • 1970-01-01
      • 2017-06-21
      • 2020-08-09
      • 1970-01-01
      • 2018-10-05
      相关资源
      最近更新 更多