I think you're almost there, but to get the late evaluation you want, you need to put file_path in as a variable you want to patch, and then use the lambda to delay binding:
#models.py
upload_path = 'files'
class Model(models.Model):
file = models.FileField(upload_to=lambda x,y: upload_path)
#tests.py
@mock.patch('models.upload_path', 'files/test')
class ModelTest(object):
...