I have the following logic in my view:
def view_function(request):
if request.method == 'POST':
uploadform = UploadFileForm(request.POST, request.FILES)
if uploadform.is_valid():
#do stuff
Where UploadFileForm equals to:
class UploadFileForm(forms.Form):
file = forms.FileField()
I am trying to write unit tests for this view. Looking in Django docs, the suggested way is this:
class test_stuffTest(TestCase):
def setUp(self):
self.client = django.test.client.Client()
...
def test_stuff(self):
myfile = open('....\file.csv','r')
response = self.client.post('/', {'name':'file.csv','attachment':myfile})
#check response
My goal is to get uploadform.is_valid() to evaluate to True, so I can test the code which follows the form validation. When I run the test above, uploadform.is_valid() evaluates to False. Is there anything I am missing? Is the code in my test adding the file to request.FILES, or is it doing something else?
In the docs, the file field is called
attachment, but in yours, it’s calledfile.You don’t need
namein your post data either — that refers to another field calledname, not the name of the file that you are uploading.Try the following: