diff --git a/aws_lambda_powertools/metrics/metrics.py b/aws_lambda_powertools/metrics/metrics.py index 00e083d4a7f..cbf1d2eb2e2 100644 --- a/aws_lambda_powertools/metrics/metrics.py +++ b/aws_lambda_powertools/metrics/metrics.py @@ -77,7 +77,8 @@ def __init__(self, service: Optional[str] = None, namespace: Optional[str] = Non self.namespace: Optional[str] = namespace self.metadata_set = self._metadata self.default_dimensions = self._default_dimensions - self.dimension_set = {**self._default_dimensions, **self._dimensions} + self.dimension_set = self._dimensions + self.dimension_set.update(**self._default_dimensions) super().__init__( metric_set=self.metric_set, diff --git a/tests/functional/test_metrics.py b/tests/functional/test_metrics.py index e0ce7f84dc9..96dd3b41b25 100644 --- a/tests/functional/test_metrics.py +++ b/tests/functional/test_metrics.py @@ -898,3 +898,30 @@ def lambda_handler(evt, ctx): # THEN we should have default dimensions in both outputs assert "environment" in first_invocation assert "environment" in second_invocation + + +def test_metrics_reuse_dimension_set(metric, dimension, namespace): + # GIVEN Metrics is initialized with a metric and dimension + my_metrics = Metrics(namespace=namespace) + my_metrics.add_dimension(**dimension) + my_metrics.add_metric(**metric) + + # WHEN Metrics is initialized one more time + my_metrics_2 = Metrics(namespace=namespace) + + # THEN both class instances should have the same dimension set + assert my_metrics_2.dimension_set == my_metrics.dimension_set + + +def test_metrics_reuse_metadata_set(metric, dimension, namespace): + # GIVEN Metrics is initialized with a metric, dimension, and metadata + my_metrics = Metrics(namespace=namespace) + my_metrics.add_dimension(**dimension) + my_metrics.add_metric(**metric) + my_metrics.add_metadata(key="meta", value="data") + + # WHEN Metrics is initialized one more time + my_metrics_2 = Metrics(namespace=namespace) + + # THEN both class instances should have the same metadata set + assert my_metrics_2.metadata_set == my_metrics.metadata_set