gpt4 book ai didi

django - 模拟文件数据来测试表单的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 08:50:36 24 4
gpt4 key购买 nike

我正在尝试测试一个自己编写的 FormField AudioFileFormField,它在存储文件之前检查文件是否是音频文件。为此我已经覆盖了 to_python 方法。在尝试测试这个 FormField 时我遇到了一些困难。

这是迄今为止我的测试用例:

from django import forms
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase

class TestAudioFileFormField(TestCase):
""" test the formfield to use for AudioFile Uploads """

class TestForm(forms.Form):
audiofilefield = AudioFileFormField()


def setUp(self):

self.AUDIOFILE_TEST_ROOT = os.path.dirname(__file__) + '/data/'
self.files = audiofile_files


def test_to_python(self):
""" assign some files to a form and validate the form """

f = file(self.AUDIOFILE_TEST_ROOT + self.files[0])
file_data = {'audiofilefield':SimpleUploadedFile( self.files[0],f.read() )}
data = {}

form = self.TestForm(data,f)
form.is_valid()

行 form.is_valid() 引发 AttributeError: 'file' 对象没有属性 'get'

当我在 form.is_valid() 之前插入调试跟踪时,这就是我在交互式 session 中得到的结果:

ipdb> form.is_valid()
AttributeError: 'file' object has no attribute 'get'
ipdb> suf = file_data['audiofilefield']
ipdb> suf
<SimpleUploadedFile: invalid_format.mp3 (text/plain)>
ipdb> dir(suf)
[lots of info here]
ipdb> form.is_valid()
True

我在交互式 session 中到底做了什么更改,以使表单验证正常工作?将文件传递给 SimpleUploadedFile 以避免 AttributeError 的正确方法是什么?

最佳答案

好吧,焕然一新的外观非常有值(value)。这是我的新 test_to_python 测试,这次有效:

def test_to_python(self):
f = file(self.AUDIOFILE_TEST_ROOT + self.files[0])
file_data = {'audiofilefield':SimpleUploadedFile(self.files[0],f.read())}
data = {}
form = self.TestForm(data,file_data)
self.assertTrue( form.is_valid() )

关于django - 模拟文件数据来测试表单的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com