如何在Django ModelForm中测试定制的clean方法

如何在Django ModelForm中测试定制的clean方法,django,python-3.x,django-models,django-forms,Django,Python 3.x,Django Models,Django Forms,我有下面的模型 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.

我有下面的模型

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

提前感谢。

使用多值DICT生成文件数据 使用多值DICT生成文件数据
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())