--- a/python/test/unit/io/test_adios2.py
+++ b/python/test/unit/io/test_adios2.py
@@ -12,6 +12,7 @@
 import pytest
 
 import ufl
+import dolfinx.io
 from basix.ufl import element
 from dolfinx import default_real_type, default_scalar_type
 from dolfinx.fem import Function, functionspace
@@ -44,6 +45,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_fides_mesh(self, tempdir, dim, simplex):
         """Test writing of a single Fides mesh with changing geometry."""
+        if not hasattr(dolfinx.io, "FidesWriter"):
+            pytest.skip("FidesWriter is not available")
+
         from dolfinx.io import FidesWriter
 
         filename = Path(tempdir, "mesh_fides.bp")
@@ -57,6 +61,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_two_fides_functions(self, tempdir, dim, simplex):
         """Test saving two functions with Fides."""
+        if not hasattr(dolfinx.io, "FidesWriter"):
+            pytest.skip("FidesWriter is not available")
+
         from dolfinx.io import FidesWriter
 
         mesh = generate_mesh(dim, simplex)
@@ -81,6 +88,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_fides_single_function(self, tempdir, dim, simplex):
         """Test saving a single first order Lagrange functions."""
+        if not hasattr(dolfinx.io, "FidesWriter"):
+            pytest.skip("FidesWriter is not available")
+
         from dolfinx.io import FidesWriter
 
         mesh = generate_mesh(dim, simplex)
@@ -94,6 +104,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_fides_function_at_nodes(self, tempdir, dim, simplex):
         """Test saving P1 functions with Fides (with changing geometry)."""
+        if not hasattr(dolfinx.io, "FidesWriter"):
+            pytest.skip("FidesWriter is not available")
+
         from dolfinx.io import FidesWriter
 
         mesh = generate_mesh(dim, simplex)
@@ -126,6 +139,9 @@
 class TestVTX:
     @pytest.mark.skipif(MPI.COMM_WORLD.size > 1, reason="This test should only be run in serial.")
     def test_second_order_vtx(self, tempdir):
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         filename = Path(tempdir, "mesh_fides.bp")
@@ -139,6 +155,9 @@
     @pytest.mark.parametrize("dim", [2, 3])
     @pytest.mark.parametrize("simplex", [True, False])
     def test_vtx_mesh(self, tempdir, dim, simplex):
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         filename = Path(tempdir, "mesh_vtx.bp")
@@ -152,6 +171,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_vtx_functions_fail(self, tempdir, dim, simplex):
         """Test for error when elements differ."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         mesh = generate_mesh(dim, simplex)
@@ -165,6 +187,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_vtx_different_meshes_function(self, tempdir, simplex):
         """Test for error when functions do not share a mesh."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         mesh = generate_mesh(2, simplex)
@@ -179,6 +204,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_vtx_single_function(self, tempdir, dim, simplex):
         """Test saving a single first order Lagrange functions."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         mesh = generate_mesh(dim, simplex)
@@ -199,6 +227,9 @@
     @pytest.mark.parametrize("simplex", [True, False])
     def test_vtx_functions(self, tempdir, dtype, dim, simplex):
         """Test saving high order Lagrange functions."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         xtype = np.real(dtype(0)).dtype
@@ -240,6 +271,9 @@
 
     def test_save_vtkx_cell_point(self, tempdir):
         """Test writing point-wise data."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         mesh = create_unit_square(MPI.COMM_WORLD, 8, 5)
@@ -257,6 +291,9 @@
 
     def test_empty_rank_mesh(self, tempdir):
         """Test VTXWriter on mesh where some ranks have no cells."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXWriter
 
         comm = MPI.COMM_WORLD
@@ -291,6 +328,9 @@
     @pytest.mark.parametrize("reuse", [True, False])
     def test_vtx_reuse_mesh(self, tempdir, dim, simplex, reuse):
         """Test reusage of mesh by VTXWriter."""
+        if not hasattr(dolfinx.io, "VTXWriter"):
+            pytest.skip("VTXWriter is not available")
+
         from dolfinx.io import VTXMeshPolicy, VTXWriter
 
         adios2 = pytest.importorskip("adios2", minversion="2.10.0")
