首页 > 解决方案 > 测试使用 TemporaryUploadedFile 的视图

问题描述

我有这样的看法:

import pandas as pd

def ingest(request):
    for temp_file in request.FILES.values():
        # There only ever is one use next(gen) if you prefer
        path = temp_file.temporary_file_path()
        break
    
   df = pd.read_csv( path, encoding="UTF-16-le", header=None )

   ...

我想测试一下这个观点。我实际上无法更改视图逻辑,因为它被设计为端点 fpr 一个我无法控制的外部服务。

我已添加 FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.TemporaryFileUploadHandler',]到设置中以避免令人讨厌的意外,但我无法使测试正常工作。

我的test.py

from django.core.files.uploadedfile import TemporaryUploadedFile
from django.test import TestCase

class InputTest(TestCase):
    def test_extract_csv(self):
        form_data = {
            'upload_file': TemporaryUploadedFile("data/test.csv", "csv", 88614, "utf-16-le")
        }

        self.client.post("/ingest", form_data)

但这会导致视图中的数据为空。

标签: pythondjango

解决方案


推荐阅读