code: def test_node_generator(self):
      # should generate a (node, path) pair for each dict in a dict
  
      node4 = {"h": 5}
      node3 = {"g": 7}
      node2 = {"e": node3}
      node1 = {"c": node2, "d": ["blah"]}
      node0 = {"a": node1, "b": 8}
  
      expected_node_path_tuples = [
          (node0, ()),
          (node1, ("a",)),
          (node2, ("a", "c")),
          (node3, ("a", "c", "e")),
          (node4, ("a", "c", "f")),
      ]
      for i, item in enumerate(node_generator(node0)):
          self.assertEqual(item, expected_node_path_tuples[i])
  
file_path: plotly.py/packages/python/plotly/plotly/tests/test_core/test_utils/test_utils.py
imports: from unittest import TestCase
  from plotly.utils import PlotlyJSONEncoder, get_by_path, node_generator
  import json
label_desc: Use image node_id 1 for calling the TestNodeGenerator obj's underlying member method code with example usage: obj.test_node_generator() without return types