如何在Django ModelForm中测试定制的clean方法
我有下面的模型 forms.py如何在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.
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())