如何在 Django 中测试上传文件
How to test uploadfile in django
我有一个上传表单,我想测试一下。但是有一个问题。
def test_if_can_upload_file(self):
with open('app_blog/tests/test.txt') as file:
self.client.post(reverse('csv_blog'), {'attachment': file})
test_file = file.read()
self.assertEqual(test_file, 'test file')
我测试的时候报错:
self.assertEqual(test_file, 'test file')
AssertionError: '' != 'test file'
+ test file
为什么我的文件显示为空?其实不是 empty.Or 可能我测试表格的方式不对?
形式
class UploadBlogForm(forms.ModelForm):
file = forms.FileField()
class Meta:
model = Blog
fields = 'file',
查看
def upload_blog(request):
if request.method == "POST":
upload_file_form = UploadBlogForm(request.POST, request.FILES)
if upload_file_form.is_valid():
blog_file = upload_file_form.cleaned_data['file'].read()
blog_str = blog_file.decode('utf-8').split('\n')
csv_reader = reader(blog_str, delimiter=":::", quotechar='"')
您的 self.client.post(…)
已经 耗尽 文件处理程序并读取文件的全部内容,因此这意味着当您调用 file.read()
时,光标已经移动到文件末尾,因此 returns 一个空字符串。
您应该重新打开文件并从头读取文件,因此:
def test_if_can_upload_file(self):
with open('app_blog/tests/test.txt') as file:
self.client.post(reverse('csv_blog'), {'attachment': file})
with open('app_blog/tests/test.txt') as <strong>file</strong>:
test_file = <strong>file</strong>.read()
self.assertEqual(test_file, 'test file')
我有一个上传表单,我想测试一下。但是有一个问题。
def test_if_can_upload_file(self):
with open('app_blog/tests/test.txt') as file:
self.client.post(reverse('csv_blog'), {'attachment': file})
test_file = file.read()
self.assertEqual(test_file, 'test file')
我测试的时候报错:
self.assertEqual(test_file, 'test file')
AssertionError: '' != 'test file'
+ test file
为什么我的文件显示为空?其实不是 empty.Or 可能我测试表格的方式不对?
形式
class UploadBlogForm(forms.ModelForm):
file = forms.FileField()
class Meta:
model = Blog
fields = 'file',
查看
def upload_blog(request):
if request.method == "POST":
upload_file_form = UploadBlogForm(request.POST, request.FILES)
if upload_file_form.is_valid():
blog_file = upload_file_form.cleaned_data['file'].read()
blog_str = blog_file.decode('utf-8').split('\n')
csv_reader = reader(blog_str, delimiter=":::", quotechar='"')
您的 self.client.post(…)
已经 耗尽 文件处理程序并读取文件的全部内容,因此这意味着当您调用 file.read()
时,光标已经移动到文件末尾,因此 returns 一个空字符串。
您应该重新打开文件并从头读取文件,因此:
def test_if_can_upload_file(self):
with open('app_blog/tests/test.txt') as file:
self.client.post(reverse('csv_blog'), {'attachment': file})
with open('app_blog/tests/test.txt') as <strong>file</strong>:
test_file = <strong>file</strong>.read()
self.assertEqual(test_file, 'test file')