class Employee:
address = models.ForeignKey(Address)
def setZipCode(self, zipcode):
setattr(self, 'zipCode', zipcode)
def set_address_property(self, target_property, value):
try:
setattr(self.address, target_property, value)
self.address.save()
except ObjectDoesNotExist:
# TODO. Figure out what to do here
print 'Cannot save'
return
def get_address_property(self, target_property, default):
try:
return getattr(self.address, target_property)
except ObjectDoesNotExist:
return default
@property
def zipCode(self):
return self.get_address_property('zipCode', None)
@zipCode.setter
def zipCode(self, value):
self.set_address_property('zipCode', value)
def functionToTest(employee):
# Blah Blah Blah...
employee.setZipCode(123)
def testFunctionToTest(self):
employee = MagicMock()
employee.address.zipCode = None
employee.attribute.setZipCode = lambda x, y: setattr(x.address, 'zipCode', y)
functionToTest(employee)
self.assertEquals(employee.address.zipCode, 123)
Если я попытаюсь запустить этот тест, я все равно получаю employee.address.zipCode как None вместо 123. Как я могу исправить эту проблему?Как издеваться над функцией объекта, которая записывает один и тот же объект в python?
Я отредактировал код, чтобы на самом деле отразить мою оригинальную логику. Спасибо за помощь.
В чем смысл 'setZipCode' вообще? Если у вас должен быть метод, почему вы используете 'setattr', а не просто присваиваете значение' self.address.zipCode'? –
Позвольте мне отредактировать функцию setZipCode. – user1159517