import asyncio import unittest from functools import wraps def run_until_complete(fun): if not asyncio.iscoroutinefunction(fun): fun = asyncio.coroutine(fun) @wraps(fun) def wrapper(test, *args, **kw): loop = test.loop ret = loop.run_until_complete( asyncio.wait_for(fun(test, *args, **kw), 15, loop=loop)) return ret return wrapper class BaseTest(unittest.TestCase): """Base test case for unittests. """ def setUp(self): self.loop = asyncio.new_event_loop() asyncio.set_event_loop(None) def tearDown(self): self.loop.close() del self.loop