【发布时间】:2020-07-09 09:48:44
【问题描述】:
我有一个带有一对多地址字段的 django 'Customer' 模型。我想模拟地址模型,并将模拟分配给篮子模型并将其保存到测试数据库。 我目前正在使用类似的东西:
address_mock = Mock(spec=Address)
address_mock._state = Mock()
customer = Customer(address=address_mock)
customer.save()
但得到错误:
ValueError: Cannot assign "\<Mock spec='Address' id='72369632'\>": the current database router prevents this relation
我只是误解了模拟/测试数据库的工作原理吗?我不想为所有测试创建地址模型,并且该字段不可为空
【问题讨论】:
-
您不能使用 Mock。创建一个真实的地址!
-
使用
FactoryBoy在数据库中创建测试数据factoryboy.readthedocs.io/en/latest
标签: python django unit-testing model mocking