diff --git a/test/py/RunClientServer.py b/test/py/RunClientServer.py
index f05dc5d..cbff372 100755
--- a/test/py/RunClientServer.py
+++ b/test/py/RunClientServer.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+import time
 import subprocess
 import sys
 import os
@@ -8,12 +9,20 @@
 def relfile(fname):
     return os.path.join(os.path.dirname(__file__), fname)
 
-serverproc = subprocess.Popen([sys.executable, relfile("TestServer.py")])
-try:
+def runTest(server_class):
+    print "Testing ", server_class
+    serverproc = subprocess.Popen([sys.executable, relfile("TestServer.py"), server_class])
+    try:
 
-    ret = subprocess.call([sys.executable, relfile("TestClient.py")])
-    if ret != 0:
-        raise Exception("subprocess failed")
-finally:
-    # fixme: should check that server didn't die
-    os.kill(serverproc.pid, signal.SIGKILL)
+        ret = subprocess.call([sys.executable, relfile("TestClient.py")])
+        if ret != 0:
+            raise Exception("subprocess failed")
+    finally:
+        # fixme: should check that server didn't die
+        os.kill(serverproc.pid, signal.SIGKILL)
+
+    # wait for shutdown
+    time.sleep(5)
+
+map(runTest, ["TForkingServer", "TThreadPoolServer",
+              "TThreadedServer", "TSimpleServer"])
diff --git a/test/py/TestClient.py b/test/py/TestClient.py
index d7b65b7..fb0133a 100755
--- a/test/py/TestClient.py
+++ b/test/py/TestClient.py
@@ -86,6 +86,12 @@
       self.assertEqual(x.errorCode, 1001)
       self.assertEqual(x.message, 'Xception')
 
+    try:
+      self.client.testException("throw_undeclared")
+      self.fail("should have thrown exception")
+    except Exception: # type is undefined
+      pass
+
   def testAsync(self):
     start = time.time()
     self.client.testAsync(2)
diff --git a/test/py/TestServer.py b/test/py/TestServer.py
index 4c6cb8a..0247bc2 100755
--- a/test/py/TestServer.py
+++ b/test/py/TestServer.py
@@ -51,6 +51,8 @@
       x.errorCode = 1001
       x.message = str
       raise x
+    elif str == "throw_undeclared":
+      raise ValueError("foo")
 
   def testAsync(self, seconds):
     print 'testAsync(%d) => sleeping...' % seconds
@@ -62,5 +64,8 @@
 transport = TSocket.TServerSocket(9090)
 tfactory = TTransport.TBufferedTransportFactory()
 pfactory = TBinaryProtocol.TBinaryProtocolFactory()
-server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
+
+ServerClass = getattr(TServer, sys.argv[1])
+
+server = ServerClass(processor, transport, tfactory, pfactory)
 server.serve()
