Bonjour à tous,
je travaille avec des Notebooks Jupyter avec mes élèves, et pour certains scripts je veux leur interdire d'utiliser certaines fonctions. j'y arrive très bien pour des fonction comme len :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
from unittest.mock import patch
with patch('__main__.len') as mock_len:
    longueur("aaa")
mock_len.assert_not_called()
Et dans ce cas là la fonction programmée ne passe pas le bloc de test si len(chaine) est utilisée dans la fonction longueur()

mais impossible d'y arriver avec des méthodes comme .count(), je n'arrive pas à patcher count.
J'ai réussi à faire ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
from unittest.mock import MagicMock
L = MagicMock()
L.return_value=("")
compte(L,"b")
assert L.count.assert_not_called()
qui effectivement me renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
AssertionError: Expected 'count' to not have been called. Called 1 times.
mais si il n'y a pas d'erreur (sans utiliser count) et comme ma fonction compte(a,b) est récursive ben là c'est fini, je plante tout...

Quelqu'un aurait une solution pour tester si ma fonction compte(a,b) utilise .count() ?

Merci du coup de main