diff --git a/Lib/test/test_structmembers.py b/Lib/test/test_structmembers.py
index 56024fa..0d28756 100644
--- a/Lib/test/test_structmembers.py
+++ b/Lib/test/test_structmembers.py
@@ -12,13 +12,15 @@
                           9.99999, 10.1010101010)
 
 class ReadWriteTests(unittest.TestCase):
-    def test_types(self):
+
+    def test_bool(self):
         ts.T_BOOL = True
         self.assertEquals(ts.T_BOOL, True)
         ts.T_BOOL = False
         self.assertEquals(ts.T_BOOL, False)
         self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 1)
 
+    def test_byte(self):
         ts.T_BYTE = CHAR_MAX
         self.assertEquals(ts.T_BYTE, CHAR_MAX)
         ts.T_BYTE = CHAR_MIN
@@ -26,6 +28,7 @@
         ts.T_UBYTE = UCHAR_MAX
         self.assertEquals(ts.T_UBYTE, UCHAR_MAX)
 
+    def test_short(self):
         ts.T_SHORT = SHRT_MAX
         self.assertEquals(ts.T_SHORT, SHRT_MAX)
         ts.T_SHORT = SHRT_MIN
@@ -33,6 +36,7 @@
         ts.T_USHORT = USHRT_MAX
         self.assertEquals(ts.T_USHORT, USHRT_MAX)
 
+    def test_int(self):
         ts.T_INT = INT_MAX
         self.assertEquals(ts.T_INT, INT_MAX)
         ts.T_INT = INT_MIN
@@ -40,6 +44,7 @@
         ts.T_UINT = UINT_MAX
         self.assertEquals(ts.T_UINT, UINT_MAX)
 
+    def test_long(self):
         ts.T_LONG = LONG_MAX
         self.assertEquals(ts.T_LONG, LONG_MAX)
         ts.T_LONG = LONG_MIN
@@ -47,21 +52,21 @@
         ts.T_ULONG = ULONG_MAX
         self.assertEquals(ts.T_ULONG, ULONG_MAX)
 
-        ## T_LONGLONG and T_ULONGLONG may not be present on some platforms
-        if hasattr(ts, 'T_LONGLONG'):
-            ts.T_LONGLONG = LLONG_MAX
-            self.assertEquals(ts.T_LONGLONG, LLONG_MAX)
-            ts.T_LONGLONG = LLONG_MIN
-            self.assertEquals(ts.T_LONGLONG, LLONG_MIN)
+    @unittest.skipUnless(hasattr(ts, "T_LONGLONG"), "long long not present")
+    def test_longlong(self):
+        ts.T_LONGLONG = LLONG_MAX
+        self.assertEquals(ts.T_LONGLONG, LLONG_MAX)
+        ts.T_LONGLONG = LLONG_MIN
+        self.assertEquals(ts.T_LONGLONG, LLONG_MIN)
 
-            ts.T_ULONGLONG = ULLONG_MAX
-            self.assertEquals(ts.T_ULONGLONG, ULLONG_MAX)
+        ts.T_ULONGLONG = ULLONG_MAX
+        self.assertEquals(ts.T_ULONGLONG, ULLONG_MAX)
 
-            ## make sure these will accept a plain int as well as a long
-            ts.T_LONGLONG = 3
-            self.assertEquals(ts.T_LONGLONG, 3)
-            ts.T_ULONGLONG = 4
-            self.assertEquals(ts.T_ULONGLONG, 4)
+        ## make sure these will accept a plain int as well as a long
+        ts.T_LONGLONG = 3
+        self.assertEquals(ts.T_LONGLONG, 3)
+        ts.T_ULONGLONG = 4
+        self.assertEquals(ts.T_ULONGLONG, 4)
 
 
 class TestWarnings(unittest.TestCase):
