diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 4d491b0..1ce01c3 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -577,10 +577,10 @@
         i = C()
         i.attr = i
         for proto in protocols:
-            s = self.dumps(i, 2)
+            s = self.dumps(i, proto)
             x = self.loads(s)
             self.assertEqual(dir(x), dir(i))
-            self.assertTrue(x.attr is x)
+            self.assertIs(x.attr, x)
 
     def test_recursive_multi(self):
         l = []
@@ -637,13 +637,13 @@
     def test_bytes(self):
         for proto in protocols:
             for s in b'', b'xyz', b'xyz'*100:
-                p = self.dumps(s)
+                p = self.dumps(s, proto)
                 self.assertEqual(self.loads(p), s)
             for s in [bytes([i]) for i in range(256)]:
-                p = self.dumps(s)
+                p = self.dumps(s, proto)
                 self.assertEqual(self.loads(p), s)
             for s in [bytes([i, i]) for i in range(256)]:
-                p = self.dumps(s)
+                p = self.dumps(s, proto)
                 self.assertEqual(self.loads(p), s)
 
     def test_ints(self):
