Hi! I've just started a new project using Twisted and I want to write unit tests since the beginning. Unfortunately I've got some trouble understanding how should I do it. I read 'Test-driven development with Twisted', read some articles on the web and searched on the mailing list but I couldn't find anything which make it clear for me. I've got a class: class SessionCleaner(object): def __init__(self, session_db, interval=10): self.session_db = session_db self.lc = task.LoopingCall(self.check_old_sessions) self.lc.start(interval) @defer.inlineCallbacks def check_old_sessions(self): log.msg('check_old_sessions()', logLevel=logging.DEBUG) try: old_sessions = yield self.session_db.get_old_sessions() for s in old_sessions: yield self.session_db.process_stopped(s) except txredisapi.ConnectionError as e: log.msg('check_old_sessions - connection error {}' .format(e), logLevel=logging.WARNING) session_db is a object with methods which makes some calls to Redis. Testing if __init__ works correctly is easy - I can mock task.LoopingCall and check if it was called with correct attributes. I've got trouble testing check_old_sessions. Since I'm writing unit tests I don't want to call real session_db methods and make real Redis queries. I'd like to mock them and test just few things: - is the method get_old_sessions called? - is the method process_stopped called N times with the arguments returned by mocked get_old_sessions? - is txredisapi.ConnectionError handled correctly? So is there any "right" way of mocking functions which returns deferreds? Or maybe I should test this method differently? Best regards, Patryk