Skip to main content
 首页 » 编程设计

python之Django REST UnitTest 没有提交文件

2025年02月15日3752php

我用小案例成功实现。然后我开始使用更大的结构。我得到了错误。
错误:
没有提交文件。

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) 

它们是模型、序列化器和 View 集

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

序列化器.py
https://gist.github.com/elcolie/7f097642c4a752e76044c6938c49e097

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

一天后我无法弄清楚那个错误在哪里。

引用资料:
DRF APITestCase not use `multipart` with other param

请您参考如下方法:

看起来您在 data 字典中遗漏了引号。应该是:

data = { 
    'file': uploaded_file, 
}