Je suis en train de faire quelque chose comme ceci à des méthodes simulées sur un modèle Django en utilisant la bibliothèque maquette Python:Comment se moquer des méthodes enchaînées sur les modèles Django
# file: tasks.py
def delete_ads(user):
# works fine and return a list of 4 MagicMock objects
ads = Classifieds.objects.filter(
user=user
)
# file: tests.py
def test_delete_ads():
return_list = [MagicMock(name='1'), MagicMock(name='2'), MagicMock(name='3'), MagicMock(name='4')]
with patch('user.tasks.Classifieds') as classified_mock:
classified_mock.objects.filter.return_value = return_value
Le code ci-dessus fonctionne très bien mais commence à renvoyer une seule MagicMock objet après que je change mon code à ceci:
# file: tasks.py
def delete_ads(user):
# works fine and return a list of 4 MagicMock objects
ads = Classifieds.objects.filter(
user=user
).order_by('-added')
# file: tests.py
def test_delete_ads():
return_list = [MagicMock(name='1'), MagicMock(name='2'), MagicMock(name='3'), MagicMock(name='4')]
with patch('user.tasks.Classifieds') as classified_mock:
classified_mock.objects.filter.order_by.return_value = return_value
y at-il de toute façon que je peux le faire correctement même quand je suis méthode cHAÎNAGE appelle des modèles Django?
Vous avez un certain nombre de fautes de frappe dans votre question. Etes-vous sûr que ceux-ci ne sont pas aussi dans votre code? – Dunes
@Dunes Yep Je suis assez sûr que les fautes de frappe ne sont pas dans mon code. J'ai tapé ceci séparément. – Rafay