【发布时间】:2012-04-27 04:01:03
【问题描述】:
我正在尝试模拟 django models.Model 上的保存方法调用。 我使用 Mock 作为我的模拟库。
我正在测试位于 apps.deps.house_factory 的文件 house_factory.py 中的一个函数。
house_factory.py: 从apps.market.models 导入房子
def create_house(location, date, price):
house = House(id=None, date, price)
house.save()
# calculate some stuff and further expand the house instance
# for example house.tag.add("some-tag")
# save after calculations
house.save()
我想模拟出 House 模型。
class HouseModelMock(mock.Mock):
def save(self):
pass
测试方法,是 unittest.TestCase 类的一部分
@patch('apps.deps.house_factory.House', new_callable=HouseModelMock)
def create_house_test(self, MockedHouse):
""" Constants """
DAYS_FROM_TODAY = 55
DATE = datetime.date.today() + datetime.timedelta(days=DAYS_FROM_TODAY)
PRICE = 250000
# A location is also a django module , I'm using factory_boy here for building a 'mocked' location
location = LocationFactory.build()
create_house(DATE, PRICE)
MockedHouse.assert_called_with(None, DATE, PRICE)
MockedHouse.save.assert_called_with()
如果我运行这个测试,我会得到:
呼叫__ 返回 self.call(*arg, **kw) 内存错误
这是我第一次尝试认真对待 django 和测试。所以也许我设置错误,模拟数据库调用。
感谢您的帮助,
乔纳斯。
【问题讨论】:
标签: python django unit-testing mocking django-unittest