我正在尝试模拟 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()
如果我运行这个测试,我会得到:
call__ return self.call(*arg, **kw) MemoryError
这是我第一次尝试认真对待 django 和测试。所以也许我设置错误,模拟数据库调用。
任何帮助表示赞赏,
乔纳斯。