我正在尝试模拟下面的Django查询对象:
1.) if MyModel.objects.filter(data='some_data').exists():
then 2.) for row in MyModel.objects.filter(ListId=id):
我正在尝试在我的方法中的Django查询下面进行测试。
def my_method(some_parameter):
if formsList.objects.filter(data=some_data).exists():
for item in formsList.objects.filter(data1='data1',data2='data2'):
formNameInDb = (item.fileId).formName
if formNameInDb == formName:
return True
下面是我的方法:
@mock.patch('MyModel.objects')
def test_checkCombinationOfStateAndProduct(self, formsList_mock):
formsList_mock_data = mock.MagicMock(spec=MyModel)
formsList_mock_data.fileId.formName ='test data'
formsList_queryset = Mock()
formsList_mock.filter.return_value = formsList_queryset
# formsList_mock.filter.return_value = [formsList_queryset]
formsList_queryset.exists.return_value = True
对于查询1)。 就像我能够模拟如果formsList.objects.filter(data = some_data).exists()
但再次查询 2)for formList.objects.filter(data1 ='data1',data2 ='data2')中的项目: 我收到模拟对象(formsList_queryset)应该可迭代 因此,如果我像这样 [formsList_queryset] 使其可迭代。
然后我收到错误消息” AttributeError:'list'对象没有属性'exists'。
我想这是因为在使模拟对象可迭代之后,它的行为类似于列表,因此它不具有exist属性。
我的问题是我无法使模拟对象(formsList_queryset)可迭代,因此它无法在上述两个查询中使用。
还有其他方法可以模拟两个查询来解决此问题。
任何人都可以帮助解决链查询。任何帮助或领导,我将不胜感激。 请让我知道是否需要任何信息。