code: def test_multioutput(es):
      multioutput = AggregationFeature(
          IdentityFeature(es["log"].ww["zipcode"]),
          "sessions",
          NMostCommon,
      )
      feat = FeatureOutputSlice(multioutput, 0)
      graph = graph_feature(feat).source
  
      feat_name = feat.get_name()
      prim_node = "0_{}_n_most_common".format(multioutput.get_name())
      groupby_node = "{}_groupby_log--session_id".format(
          multioutput.get_name()
      )
  
      sessions_table = "\u2605 sessions (target)"
      log_table = "log"
      groupby_edge = 'log:session_id -> "{}"'.format(groupby_node)
      groupby_input = 'log:zipcode -> "{}"'.format(groupby_node)
      prim_input = '"{}" -> "{}"'.format(groupby_node, prim_node)
      feat_edge = '"{}" -> sessions:"{}"'.format(prim_node, feat_name)
  
      graph_components = [
          feat_name,
          prim_node,
          groupby_node,
          sessions_table,
          log_table,
          groupby_edge,
          groupby_input,
          prim_input,
          feat_edge,
      ]
  
      for component in graph_components:
          assert component in graph
  
      dataframes = {
          "log": [log_table, "zipcode", "session_id"],
          "sessions": [sessions_table, feat_name],
      }
      for dataframe in dataframes:
          regex = r"{} \[label=<\n<TABLE.*?</TABLE>>".format(dataframe)
          matches = re.findall(regex, graph, re.DOTALL)
          assert len(matches) == 1
  
          rows = re.findall(r"<TR.*?</TR>", matches[0], re.DOTALL)
          assert len(rows) == len(dataframes[dataframe])
          for row in rows:
              matched = False
              for i in dataframes[dataframe]:
                  if i in row:
                      matched = True
                      dataframes[dataframe].remove(i)
                      break
              assert matched
  
imports: import json
  import os
  import re
  import graphviz
  import pytest
  from featuretools.feature_base import AggregationFeature, DirectFeature, FeatureOutputSlice, GroupByTransformFeature, IdentityFeature, TransformFeature, graph_feature
  from featuretools.primitives import Count, CumMax, Mode, NMostCommon, Year
label_desc: Use image node_id 12 for calling a global function with example usage: test_multioutput(es) without return types