断言在Django中存在上传的文件

时间:2015-05-22 17:23:40

标签: django django-file-upload

假设我有一个包含FileField的模型,我刚创建了一个对象,因此将文件存储到特定位置。我如何断言文件存储在那里?

对于我的情况,我MEDIA_ROOT='/path/to/my/files/'中有settings.py,确实文件确实存储在那里,但我想要#34;正式"经过测试和验证。

我现在拥有的是什么;

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)

任何解决方案?

1 个答案:

答案 0 :(得分:1)

您可以使用os.remove(uploaded_file)

在测试结束时将其删除