我試圖用Mox嘲笑django過濾器查詢。我遵循Mox網站上的說明,但是,由於我的django查詢是一種鏈式方法,它抱怨AndReturn()方法不存在。使用Mox嘲笑Django查詢
這裏是我的方法:
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
在我的單元測試,我試圖嘲弄過濾方法返回一個空列表。
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異常:「查詢集」對象有沒有屬性「AndReturn」
注意,因爲有大量的數據庫表的是,甲骨文數據庫以及其他複雜情況,必須在不創建數據庫的情況下運行此單元測試。