diff --git a/dev/tests.py b/dev/tests.py
index <HASH>..<HASH> 100644
--- a/dev/tests.py
+++ b/dev/tests.py
@@ -22,23 +22,31 @@ test_classes = [KDFTests, KeyTests, PublicKeyTests, SymmetricTests, TrustListTes
 
 
 def run(matcher=None, repeat=1):
-    suite = unittest.TestSuite()
     loader = unittest.TestLoader()
+    # We have to manually track the list of applicable tests because for
+    # some reason with Python 3.4 on Windows, the tests in a suite are replaced
+    # with None after being executed. This breaks the repeat functionality.
+    test_list = []
     for test_class in test_classes:
         if matcher:
             names = loader.getTestCaseNames(test_class)
             for name in names:
                 if re.search(matcher, name):
-                    suite.addTest(test_class(name))
+                    test_list.append(test_class(name))
         else:
-            suite.addTest(loader.loadTestsFromTestCase(test_class))
+            test_list.append(loader.loadTestsFromTestCase(test_class))
+
     stream = sys.stderr
     verbosity = 1
     if matcher and repeat == 1:
         verbosity = 2
     elif repeat > 1:
         stream = StringIO()
+
     for _ in range(0, repeat):
+        suite = unittest.TestSuite()
+        for test in test_list:
+            suite.addTest(test)
         result = unittest.TextTestRunner(stream=stream, verbosity=verbosity).run(suite)
         if len(result.errors) > 0:
             if repeat > 1:
Fix a bug with Python <I> on Windows resetting test suites after running