diff --git a/unittests/test_macros.py b/unittests/test_macros.py
index 2934d7902a2f7be6925491f73412b0350265145d..4e27e42f8d1e633cf97fa142e2c0ec8aa013af05 100644
--- a/unittests/test_macros.py
+++ b/unittests/test_macros.py
@@ -327,7 +327,6 @@ extroot: !macro
     assert cfood["extroot"]["once"]["something"]["a"] == "4"
     assert cfood["extroot"]["twice"]["something"]["a"] == "5"
     assert cfood["extroot"]["default_name"]["something"]["a"] == "4"
-
     # Code sample to generate the expanded macro:
     # with open("expanded_test_macro.yaml", "w") as f:
     #     f.write(yaml.dump(cfood))
@@ -409,3 +408,51 @@ SimulationData:
     # Code sample to generate the expanded macro:
     # with open("expanded_test_macro.yaml", "w") as f:
     #     f.write(yaml.dump(cfood))
+
+
+@pytest.mark.xfail(
+    reason="Wait until this feature is implemented"
+    "https://gitlab.com/caosdb/caosdb-crawler/-/issues/21."
+)
+def test_def_replacements():
+    """Test that parameters in macro definitions can be used
+    for defining subsequent parameters.
+    """
+
+    cfood = _temp_file_load("""
+---
+metadata:
+  macros:
+    - !defmacro
+      name: test_def_replacements
+      params:
+        macro_name: default_name
+        z: $macro_name
+        a: $macro_name
+        v: $z
+      definition:
+        $macro_name:
+          macro_name: $macro_name
+          z: $z
+          a: $a
+          v: $v
+---
+extroot: !macro
+  test_def_replacements:
+  - macro_name: once
+  - macro_name: twice
+    z: 5
+  - {}
+    """)
+    assert cfood["extroot"]["once"]["z"] == "once"
+    assert cfood["extroot"]["once"]["a"] == "once"
+    assert cfood["extroot"]["once"]["v"] == "once"
+    assert cfood["extroot"]["once"]["macro_name"] == "once"
+    assert cfood["extroot"]["twice"]["z"] == "5"
+    assert cfood["extroot"]["twice"]["a"] == "5"
+    assert cfood["extroot"]["twice"]["v"] == "5"
+    assert cfood["extroot"]["twice"]["macro_name"] == "twice"
+    assert cfood["extroot"]["default_name"]["z"] == "default_name"
+    assert cfood["extroot"]["default_name"]["a"] == "default_name"
+    assert cfood["extroot"]["default_name"]["v"] == "default_name"
+    assert cfood["extroot"]["default_name"]["macro_name"] == "default_name"