使用Mox模拟Django查询
我正在尝试使用Mox模拟django过滤器查询。我遵循Mox网站上的说明,但是,由于我的django查询是一个链式方法,它抱怨AndReturn()方法不存在。
这是我的方法:
def CheckNameUniqueness(device):
ex_device = device.__class__.objects.filter(name__iexact=device.name)
if not ex_device:
return None
if ex_device.count() > 0:
return ex_device
在我的单元测试中,我试图模拟filter方法返回一个空列表。
class testCheckNameUniqeness(unittest.TestCase):
""" Unit test for CheckNameUniqueness function """
def setUp(self):
self.device_mocker = mox.Mox()
def testCheckNameUniqenessNotExists(self):
device = self.device_mocker.CreateMock(models.Device)
device.name = "some name"
device.objects.filter(name__iexact=device.name).AndReturn(None)
# Put all mocks created by mox into replay mode
self.device_mocker.ReplayAll()
# Run the test
ret = CheckNameUniqueness(device)
self.device_mocker.VerifyAll()
self.assertEqual(None, ret)
当我运行我的测试用例时,我收到以下错误:
AttributeError:'QuerySet'对象没有属性'AndReturn'
请注意,由于大量数据库表,oracle数据库和其他复杂情况,必须在不创建数据库的情况下运行此单元测试。
没有找到相关结果
已邀请:
2 个回复
坝硷操
?这就是我阅读Mox文档的方式。我自己还没有实际使用它。
挂帘妈乡
如果要链接QuerySet,可以模拟QuerySet并将其作为返回: