断言 Django 中上传文件的存在
Asserting for presence of an uploaded file in Django
假设我有一个包含 FileField
的模型并且我刚刚创建了一个对象,因此将一个文件存储到特定位置。我如何断言文件存储在那里?
就我而言,我的 settings.py
中有 MEDIA_ROOT='/path/to/my/files/'
,文件确实存储在那里,但我想对其进行 "officially" 测试和验证。
我现在拥有的是;
uploaded_file = settings.MEDIA_ROOT+'/test_audio.mp3'
assert os.path.exists(uploaded_file)
这里的问题是,由于 Django 在测试后不会像模型的情况那样从该位置删除存储的文件,因此在第一次测试后文件会以名称更改的形式存储。我必须在每次测试前手动删除该文件。下面是我对当前断言语句的测试
class TestAudioFileManagement(TestCase):
def test_audio_upload(self):
"""
Tests uploading of audio
"""
User.objects.create_user(username="somename",
password="somepassword")
self.client.login(username="somename",
password="somepassword")
name = "somename"
audio_file = SimpleUploadedFile(
'test_audio.mp3',
open('/home/afzalsh/works/openradio/test_files/test_audio.mp3','rb').read(),
content_type='audio'
)
self.client.post(reverse('actual_upload_audio'),
{'name':name,
'audio_file':audio_file})
uploaded_file = settings.MEDIA_ROOT+'/test_audio.mp3'
assert os.path.exists(uploaded_file)
有解决方案吗?
您可以在测试结束时使用 os.remove(uploaded_file)
将其删除
假设我有一个包含 FileField
的模型并且我刚刚创建了一个对象,因此将一个文件存储到特定位置。我如何断言文件存储在那里?
就我而言,我的 settings.py
中有 MEDIA_ROOT='/path/to/my/files/'
,文件确实存储在那里,但我想对其进行 "officially" 测试和验证。
我现在拥有的是;
uploaded_file = settings.MEDIA_ROOT+'/test_audio.mp3'
assert os.path.exists(uploaded_file)
这里的问题是,由于 Django 在测试后不会像模型的情况那样从该位置删除存储的文件,因此在第一次测试后文件会以名称更改的形式存储。我必须在每次测试前手动删除该文件。下面是我对当前断言语句的测试
class TestAudioFileManagement(TestCase):
def test_audio_upload(self):
"""
Tests uploading of audio
"""
User.objects.create_user(username="somename",
password="somepassword")
self.client.login(username="somename",
password="somepassword")
name = "somename"
audio_file = SimpleUploadedFile(
'test_audio.mp3',
open('/home/afzalsh/works/openradio/test_files/test_audio.mp3','rb').read(),
content_type='audio'
)
self.client.post(reverse('actual_upload_audio'),
{'name':name,
'audio_file':audio_file})
uploaded_file = settings.MEDIA_ROOT+'/test_audio.mp3'
assert os.path.exists(uploaded_file)
有解决方案吗?
您可以在测试结束时使用 os.remove(uploaded_file)