Mercurial > hg > AuthRPC
diff wibble/tests.py @ 5:f5e3ba8cfcd0
Improved test framework
author | Ben Croston <ben@croston.org> |
---|---|
date | Wed, 31 Aug 2011 22:45:55 +0100 |
parents | ad5a8748afcf |
children | 3a6f3193cc7d |
line wrap: on
line diff
--- a/wibble/tests.py Wed Aug 31 21:35:14 2011 +0100 +++ b/wibble/tests.py Wed Aug 31 22:45:55 2011 +0100 @@ -9,15 +9,19 @@ ##### server vvv ##### class api(object): def mymethod(self): - #raise Exception("This is a test error") return 'wibbler woz ere' + def myexception(self): + raise Exception('This is a test error') + def myauth(username, password, useragent=None): #raise Exception("This is a test error in auth") - return username == 'testuser' and hashlib.md5('s3cr3t').hexdigest() == password and useragent == 'wibble_unittest' + return username == 'testuser' and \ + hashlib.md5('s3cr3t').hexdigest() == password and \ + useragent == 'wibble_unittest' def make_server(): - from wibble.server import JsonRpcApp + from server import JsonRpcApp class myhandler(simple_server.WSGIRequestHandler): def log_request(self, *a, **b): pass # do not output log messages @@ -28,13 +32,13 @@ ##### client vvv ##### class WibbleTests(unittest.TestCase): def setUp(self): - from wibble.client.ServerProxy import ServerProxy + from client.ServerProxy import ServerProxy self.client = ServerProxy('http://localhost:1337/', username='testuser', password='s3cr3t', user_agent='wibble_unittest') -class IgnoreModuleNameTest(WibbleTests): +class IgnoreClassNameTest(WibbleTests): def runTest(self): self.assertEqual(self.client.api.mymethod(),self.client.mymethod()) @@ -50,22 +54,31 @@ ##### client ^^^ ##### +finished = False def suite(): if platform.python_version().startswith('3'): # no tests for python 3 because server not ported yet return unittest.TestSuite() def test_wrapper(): server = make_server() - server.log_request = None - server.serve_forever() + while not finished: + server.handle_request() thread = Thread(target=test_wrapper) thread.start() time.sleep(0.1) # wait for server thread to start suite = unittest.TestSuite() - suite.addTest(IgnoreModuleNameTest()) + suite.addTest(IgnoreClassNameTest()) return suite if __name__ == '__main__': -# unittest.main() - main() + finished = False + unittest.TextTestRunner(verbosity=2).run(suite()) + finished = True + # make a dummy request to get server thread out of loop + try: + import urllib + urllib.urlopen('http://localhost:1337/') + except: + pass +