Einige meiner Objekte kommunizieren per Observer-Pattern - also über Events. Bisher konnte ich online keinen Betrag dazu finden, wie man Events (nicht GUI!) am pythonischten testen kann. Natürlich hab ich einige Ideen, aber bei Python gibts ja immer gerne eine viel einfachere pythonische Lösung, die mir nie eingefallen wäre.
Um das Subjekt (also z.B. eine datenhalte Objektinstanz) zu testen, also ob es den Event auch auslöst, würde ich mir einen Hilfs-Observer basteln und darin einfach die Änderung einer Variable prüfen.
Pseudocode:
Code: Alles auswählen
class HilfsObserver:
def __init__(self):
self.notified = False
def notify(self):
self.notified = True
# ...
class TestSubjekt(unittest.TestCase):
def test_notify(self):
ho = HilfsObserver()
subj = FooBarSubjekt()
self.assertFalse(ho.notified)
subj.do_something()
self.assertTrue(ho.notified)
# ...