diff --git a/unittest/python/test_QR.py b/unittest/python/test_QR.py
index 5d3b0b5aa295619eebde3b1ccb35f825abfa4c6d..37b4a696c9e299192eddf3db48b494d308f20cb1 100644
--- a/unittest/python/test_QR.py
+++ b/unittest/python/test_QR.py
@@ -38,3 +38,21 @@ assert fullpiv_householder_qr.rank() == rows
 fullpiv_householder_qr.setThreshold(1e-8)
 assert fullpiv_householder_qr.threshold() == 1e-8
 assert eigenpy.is_approx(np.eye(rows, rows), fullpiv_householder_qr.inverse())
+
+# Test ColPivHouseholderQR decomposition
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR()
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(rows, cols)
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(A)
+
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(np.eye(rows, rows))
+X = rng.random((rows, 20))
+assert colpiv_householder_qr.absDeterminant() == 1.0
+assert colpiv_householder_qr.logAbsDeterminant() == 0.0
+
+Y = colpiv_householder_qr.solve(X)
+assert (X == Y).all()
+assert colpiv_householder_qr.rank() == rows
+
+colpiv_householder_qr.setThreshold(1e-8)
+assert colpiv_householder_qr.threshold() == 1e-8
+assert eigenpy.is_approx(np.eye(rows, rows), colpiv_householder_qr.inverse())