diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py
index c8d1262..1ec271b 100755
--- a/Lib/test/test_wsgiref.py
+++ b/Lib/test/test_wsgiref.py
@@ -80,7 +80,7 @@
 
 
 
-def compare_generic_iter(test, make_it, match):
+def compare_generic_iter(make_it,match):
     """Utility to compare a generic 2.1/2.2+ iterator with an iterable
 
     If running under Python 2.2+, this tests the iterator using iter()/next(),
@@ -90,7 +90,7 @@
     it = make_it()
     n = 0
     for item in match:
-        test.assertEqual(it[n], item)
+        if not it[n]==item: raise AssertionError
         n+=1
     try:
         it[n]
@@ -106,10 +106,15 @@
     else:
         # Only test iter mode under 2.2+
         it = make_it()
-        test.assert_(iter(it) is it)
+        if not iter(it) is it: raise AssertionError
         for item in match:
-            test.assertEqual(it.next(), item)
-        test.assertRaises(StopIteration, it.next)
+            if not it.next()==item: raise AssertionError
+        try:
+            it.next()
+        except StopIteration:
+            pass
+        else:
+            raise AssertionError("Too many items from .next()",it)
 
 
 
@@ -203,7 +208,7 @@
         def make_it(text=text,size=size):
             return util.FileWrapper(StringIO(text),size)
 
-        compare_generic_iter(self, make_it, match)
+        compare_generic_iter(make_it,match)
 
         it = make_it()
         self.failIf(it.filelike.closed)
