Django 模拟单元测试表单文件字段

Django mock unit test form filefield

我有一个要单元测试的表单:

app/form.py

class MyForm(forms.Form):
    file = forms.FileField()

app/test.py

class MyFormTest(TestCase):

    def test_my_form(self):
        file_mock = MagicMock(spec=File)
        form = MyForm({'file':file_mock})
        self.assertTrue(form.is_valid())

我如何使用 mock 或其他 was 对这个表单进行单元测试?如果可能的话,我想使用 mock 来测试这个表单。我如何修补和模拟测试它?

from django.core.files.uploadedfile import SimpleUploadedFile
 ...
def test_form(self):
        upload_file = open('path/to/file', 'rb')
        file_dict = {'file': SimpleUploadedFile(upload_file.name, upload_file.read())}
        form = MyForm(file_dict)
        self.assertTrue(form.is_valid())

我从另一个来源找到了这个解决方案:

form = MyForm(files={'file':file_mock})

file_dict = {'file': SimpleUploadedFile(upload_file.name, upload_file.read())}
form = MyForm(files=file_dict)

这成功了。