2015-05-18 1 views
0

У меня есть функция на основе функции представления в Джанго, который получает идентификатор из модели, получить адрес файла и удалить его с помощью os.removeНаписать тест для представлений, содержащих os.remove в Джанго

image = Images.objects.get(id=image_id) 
os.remove(image.file) 

image_id является действительным и является частью моего прибора.

Каков наилучший способ написать тест для этого вида, без ручного создания файла каждый раз, когда я тестирую код?

Есть ли способ изменить поведение функции os.remove для теста?

ответ

0

Да. Это называется насмешкой, и для него есть библиотека Python: mock. Mock доступен в стандартной библиотеке как unittest.mock для Python 3.3+, или standalone для более ранних версий.

Так что вы могли бы сделать что-то вроде этого:

from mock import patch 
... 
@patch('mymodel_module.os.remove') 
def test_my_method(self, mocked_remove): 
    call_my_model_method() 
    self.assertTrue(mocked_remove.called) 

(где mymodel_module является models.py, где определяется ваша модель, и которые предположительно импорта os.)