code: def test_multi_output_attributes(es):
      tc = Feature(
          es["log"].ww["product_id"],
          parent_dataframe_name="sessions",
          primitive=NMostCommon,
      )
  
      assert tc.generate_name() == "N_MOST_COMMON(log.product_id)"
      assert tc.number_output_features == 3
      assert tc.base_features == ["<Feature: product_id>"]
  
      assert tc[0].generate_name() == "N_MOST_COMMON(log.product_id)[0]"
      assert tc[0].number_output_features == 1
      assert tc[0].base_features == [tc]
      assert tc.relationship_path == tc[0].relationship_path
  
imports: import os.path
  import re
  import pytest
  from pympler.asizeof import asizeof
  from woodwork.column_schema import ColumnSchema
  from woodwork.logical_types import Datetime, Integer
  from featuretools import Feature, config, feature_base
  from featuretools.feature_base import IdentityFeature
  from featuretools.primitives import Count, Diff, Last, Mode, Negate, NMostCommon, NumUnique, Sum, TransformPrimitive
  from featuretools.synthesis.deep_feature_synthesis import can_stack_primitive_on_inputs
  from featuretools.tests.testing_utils import check_rename
label_desc: Use image node_id 21 for calling a global function with example usage: test_multi_output_attributes(es) without return types