Django模拟单元测试表单filefield

时间:2016-09-20 03:06:58

标签: django forms mocking filefield django-unittest

我有一个我想要进行单元测试的表格:

应用/ form.py

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

应用/ 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或其他单位测试此表单?如果可能的话,我想使用mock来测试这个表单。我该如何修补和模拟测试呢?

2 个答案:

答案 0 :(得分:2)

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

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

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

这就是诀窍。

答案 1 :(得分:0)

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())