class UnitTestObserver(unittest.TestCase): '''Testing class''' def setUp(self): self.undOb = Observable() self.bot1 = TestObserver() self.bot2 = TestObserver() def tearDown(self): del self.undOb del self.bot1 del self.bot2 def test_defaultNoObserver(self): self.assertEqual(len(self.undOb.observers),0," Observer list is not empty") def test_DuplicateObservers(self): self.undOb.register(self.bot1) self.undOb.register(self.bot2) self.undOb.register(self.bot1) self.assertEqual(len(self.undOb.observers),2,"Duplicate observers registered") def test_RemoveAllSubscribers(self): self.undOb.register(self.bot1) self.undOb.register(self.bot2) self.undOb.register(self.bot1) self.undOb.unregister_all() self.assertEqual(len(self.undOb.observers), 0, "Observers still registered")
print(key,":",value) class ObserverB(BaseClass): '''A type of observerA class''' def __init__(self): '''Observer A constructor''' def update(self, *args, **kwargs): '''update callback which would be invoked''' print("ObserverB update invoked") for arg in args: print(arg) for key,value in kwargs.items(): print(key,":",value) if __name__ == "__main__": underObservation = Observable() bot1 = ObserverA() bot2 = ObserverB() underObservation.register(bot1) underObservation.register(bot2) underObservation.update_observers(('SMA indicates SELL', 'Bollinger Resistance', 'SELL'), {"Lotsize": 37, "TakeProfit": 300, "SL": 50})
from Observable import Observable from observer import Observer class AmericanStockMarket(Observer): def update(self, *args, **kwargs): print("American stock market received: {0}\n{1}".format(args, kwargs)) class EuropeanStockMarket(Observer): def update(self, *args, **kwargs): print("European stock market received: {0}\n{1}".format(args, kwargs)) if __name__ == "__main__": observable = Observable() american_observer = AmericanStockMarket() observable.register(american_observer) european_observer = EuropeanStockMarket() observable.register(european_observer) observable.update_observers('Market Rally', something='Hello World')