我在模拟django上的save方法调用模型。模型. 我用Mock作为我的Mock库。在
我在档案室测试一个功能_工厂.py,位于apps.deps.house_工厂. 在
房子_工厂.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()
我想模仿一下房子模型。在
^{pr2}$测试方法,是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()
如果我做这个测试,我会得到一个:
呼叫__ 返回自我呼唤(*arg,**千瓦) 记忆错误
这是我第一次尝试认真对待django和测试。所以也许我把事情搞错了,去模仿数据库调用。在
感谢任何帮助
乔纳斯。在
“这是我第一次尝试认真对待django和测试”。。。当您运行
python manage.py test
时,您不需要将数据库保存自动模拟为Django,creates a test DB来运行测试套件。然后简单地断言存储在数据库中的值。在理想情况下,mock用于修补自己的测试(和逻辑),而不是默认的Django测试。在
提示:使用内存中的db进行单元测试,例如
sqlite
将以下内容放入settings.py
文件中:这将大大加快您的测试运行。在
相关问题 更多 >
编程相关推荐