diff --git a/Applications/Utils/Tests.cmake b/Applications/Utils/Tests.cmake
index e4509187dbf303131b6b7f2072f949b1b0a8153a..2113161ab35510712c3964d85481fd996812a9e4 100644
--- a/Applications/Utils/Tests.cmake
+++ b/Applications/Utils/Tests.cmake
@@ -531,17 +531,6 @@ AddTest(
 
 ################################################
 
-if(SNAKEMAKE AND TEE_TOOL_PATH AND BASH_TOOL_PATH)
-    add_test(NAME snakemake_partmesh_mixed_elements
-        COMMAND bash -c "export PATH=$<TARGET_FILE_DIR:partmesh>:$PATH && ${SNAKEMAKE} -j 4 \
-            --config input_dir=${Data_SOURCE_DIR}/Utils/GMSH2OGS \
-            -s ${PROJECT_SOURCE_DIR}/scripts/snakemake/workflows/partmesh.smk \
-            ${Data_BINARY_DIR}/Utils/GMSH2OGS/{linear,quadratic}_mesh/{2,4,8,12}"
-    )
-    set_tests_properties(snakemake_partmesh_mixed_elements
-        PROPERTIES LABELS "default")
-endif()
-
 if(SNAKEMAKE AND TEE_TOOL_PATH AND BASH_TOOL_PATH AND OGS_USE_MPI)
     add_test(NAME snakemake_reorder_mesh
         COMMAND bash -c "${SNAKEMAKE} -j 4 \
diff --git a/Tests/Data/Utils/GMSH2OGS/test_partmesh_mixed_elements.py b/Tests/Data/Utils/GMSH2OGS/test_partmesh_mixed_elements.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6b8e4dfee091c841f91b98e40eb63fd0ddfc182
--- /dev/null
+++ b/Tests/Data/Utils/GMSH2OGS/test_partmesh_mixed_elements.py
@@ -0,0 +1,37 @@
+import itertools
+import os
+import tempfile
+from pathlib import Path
+
+from ogs import cli
+
+
+def test_partmesh_mixed_elements():
+    os.chdir(Path(__file__).resolve().parent)
+
+    meshes = ["linear", "quadratic"]
+    partitions = [2, 4, 8, 12]
+
+    for mesh, partition in itertools.product(meshes, partitions):
+        with tempfile.TemporaryDirectory() as tmpdirname:
+            cli.partmesh(ogs2metis=None, i=f"{mesh}_mesh.vtu", o=tmpdirname)
+            assert Path(f"{tmpdirname}/{mesh}_mesh.mesh").exists()
+
+            cli.partmesh(
+                exe_metis=None,
+                i=f"{mesh}_mesh.vtu",
+                x=f"{tmpdirname}/{mesh}_mesh",
+                o=tmpdirname,
+                np=partition,
+            )
+            for filetype in [
+                "cell_properties_cfg",
+                "cell_properties_val",
+                "msh_cfg",
+                "msh_ele_g",
+                "msh_ele",
+                "msh_nod",
+            ]:
+                assert Path(
+                    f"{tmpdirname}/{mesh}_mesh_partitioned_{filetype}{partition}.bin"
+                ).exists()