J'utilise unittest
y mock
(module de Michael Foord) pour tester du code python.
J'ai quelque chose comme ça (c'est une preuve de concept qui pourrait être réécrite plus proprement, mais mon code réel doit se comporter comme ça). foo
) :
import unittest
from mock import patch
def foo():
my_list = []
class Test(unittest.TestCase):
def test_foo(self):
with patch('__main__.my_list', new=[], create=True) as baz:
baz.extend(['foo', 'bar'])
self.assertEqual(foo(), None)
self.assertListEqual([], baz)
if __name__ == '__main__':
unittest.main()
Le problème est donc que mon baz
ne change pas en conséquence après que l'objet fictif foo()
et la dernière assertion échoue.
Si j'utilise my_list.remove(x)
en foo()
alors je peux voir les changements dans mon cas de test, mais je veux juste vider cette liste, je ne veux pas passer par chaque élément de la liste puis le supprimer, non, je veux une opération de vidage rapide.
Comment puis-je vérifier si mon objet fantaisie est vidé sans utiliser la fonction .remove(x)
mais en utilisant l'implémentation actuelle de la fonction foo
?