code: def test_feature_to_dict():
      f1 = LiteFeature("f1", Double)
      f2 = LiteFeature("f2", Double)
      f = LiteFeature(
          name="Column 1",
          primitive=AddNumeric(),
          base_features=[f1, f2],
      )
  
      expected = {
          "name": "Column 1",
          "logical_type": None,
          "tags": ["numeric"],
          "primitive": "add_numeric",
          "base_features": ["f1", "f2"],
          "df_id": None,
          "id": "Column 1",
          "related_features": [],
          "idx": 0,
      }
  
      actual = f.to_dict()
      json_str = json.dumps(actual)
      assert actual == expected
      assert json.dumps(expected) == json_str
  
imports: import json
  from unittest.mock import patch
  import pytest
  from woodwork.logical_types import Boolean, Double
  from featuretools.feature_discovery.feature_discovery import generate_features_from_primitives, schema_to_features
  from featuretools.feature_discovery.FeatureCollection import FeatureCollection
  from featuretools.feature_discovery.LiteFeature import LiteFeature
  from featuretools.primitives import Absolute, AddNumeric, DivideNumeric, Lag, MultiplyNumeric
  from featuretools.tests.feature_discovery.test_feature_discovery import MultiOutputPrimitiveForTest
  from featuretools.tests.testing_utils.generate_fake_dataframe import generate_fake_dataframe
label_desc: Use image node_id 3 for calling a global function with example usage: test_feature_to_dict() without return types