2017-09-26 39 views
1

我成功地實施了小案例。然後我開始採用更大的結構。我得到了錯誤。
錯誤:
No file was submitted.Django REST UnitTest沒有提交文件

import tempfile 
from unittest import skip 

from django.conf import settings 
from django.contrib.auth.models import User 
from django.core.files import File 
from django.core.files.uploadedfile import SimpleUploadedFile 
from model_mommy import mommy 
from rest_framework import status 
from rest_framework.reverse import reverse 
from rest_framework.test import APITestCase, APIClient 


class CustomerFromExcelViewsetTest(APITestCase): 
    def setUp(self): 
     self.client = APIClient() 
     self.soken_staff = mommy.make(User, username='spearhead') 
     self.user = mommy.make(User, username='Justin') 
     settings.MEDIA_ROOT = tempfile.mkdtemp() 

    def test_upload_file(self): 
     """Expect created_user, and updated_user correct set""" 
     file = File(open('./soken_web/apps/uploaded_files/complete-customer.xlsx', 'rb')) 
     uploaded_file = SimpleUploadedFile('new_excel.xlsx', file.read(), content_type='multipart/form-data') 
     data = { 
      file: uploaded_file, 
     } 
     self.client.force_authenticate(user=self.user) 
     response = self.client.post(reverse('api:customer_from_excel-list'), data, format='multipart') 
     response.render() 

     self.assertEqual(status.HTTP_201_CREATED, response.status_code) 

在這裏,他們是modelsserializersviewsets

models.py
https://gist.github.com/elcolie/52daf2bd144af82b348f7353656be434

serializers.py
https://gist.github.com/elcolie/7f097642c4a752e76044c6938c49e097

viewsets.py
https://gist.github.com/elcolie/34fa66632209f14624899d997919d3fb

一天之後,我想不出哪裏是這個bug。

參考文獻:
DRF APITestCase not use `multipart` with other param

回答

1

看起來你在data字典錯過了報價。它應該是:

data = { 
    'file': uploaded_file, 
}