Я пишу тестовый пример для модели Django с FileField. Я хотел бы изменить путь загрузки, чтобы предотвратить побочные эффекты тестов на остальную часть системы.
Я попытался передать callable для upload_to и исправить это в тестах:
#models.py
upload_path = lambda x, y: 'files'
class Model(models.Model):
file = models.FileField(upload_to=upload_path)
#tests.py
test_path = mock.Mock()
test_path.return_value = 'files/test'
@mock.patch('models.upload_path', new=test_path)
class ModelTest(object):
...
Однако это, похоже, не работает, и я полагаю, что причина в том, что fileField разыменовывает upload_path до запуска любого тестового кода, поэтому уже слишком поздно что-то исправлять.
Как я могу изменить тестовый код, что такое upload_to? В противном случае, как модель может проверить, выполняется ли она тестом?
Model.add_to_class("file", models.FileField(upload_to='files/test'))
- я не знаю, правильно ли это сделать, но это работает - спасибо! - person dgirardi   schedule 04.11.2012