diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index 0c773da..43ece92 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -176,8 +176,11 @@
         if path_length is not None and not ca:
             raise ValueError("path_length must be None when ca is False")
 
-        if path_length is not None and (not isinstance(path_length, int)
-                                        or path_length < 0):
+        if (
+            path_length is not None and (not isinstance(
+                path_length, six.integer_types
+            ) or path_length < 0)
+        ):
             raise TypeError(
                 "path_length must be a non-negative integer or None"
             )
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index de3ca31..74d14c5 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -11,17 +11,17 @@
 
 class TestExtension(object):
     def test_not_an_oid(self):
-        bc = x509.BasicConstraints(False, None)
+        bc = x509.BasicConstraints(ca=False, path_length=None)
         with pytest.raises(TypeError):
             x509.Extension("notanoid", True, bc)
 
     def test_critical_not_a_bool(self):
-        bc = x509.BasicConstraints(False, None)
+        bc = x509.BasicConstraints(ca=False, path_length=None)
         with pytest.raises(TypeError):
             x509.Extension(x509.OID_BASIC_CONSTRAINTS, "notabool", bc)
 
     def test_repr(self):
-        bc = x509.BasicConstraints(False, None)
+        bc = x509.BasicConstraints(ca=False, path_length=None)
         ext = x509.Extension(x509.OID_BASIC_CONSTRAINTS, True, bc)
         assert repr(ext) == (
             "<Extension(oid=<ObjectIdentifier(oid=2.5.29.19, name=basicConst"
@@ -33,25 +33,25 @@
 class TestBasicConstraints(object):
     def test_ca_not_boolean(self):
         with pytest.raises(TypeError):
-            x509.BasicConstraints("notbool", None)
+            x509.BasicConstraints(ca="notbool", path_length=None)
 
     def test_path_length_not_ca(self):
         with pytest.raises(ValueError):
-            x509.BasicConstraints(False, 0)
+            x509.BasicConstraints(ca=False, path_length=0)
 
     def test_path_length_not_int(self):
         with pytest.raises(TypeError):
-            x509.BasicConstraints(True, 1.1)
+            x509.BasicConstraints(ca=True, path_length=1.1)
 
         with pytest.raises(TypeError):
-            x509.BasicConstraints(True, "notint")
+            x509.BasicConstraints(ca=True, path_length="notint")
 
     def test_path_length_negative(self):
         with pytest.raises(TypeError):
-            x509.BasicConstraints(True, -1)
+            x509.BasicConstraints(ca=True, path_length=-1)
 
     def test_repr(self):
-        na = x509.BasicConstraints(True, None)
+        na = x509.BasicConstraints(ca=True, path_length=None)
         assert repr(na) == (
             "<BasicConstraints(ca=True, path_length=None)>"
         )
