code: def form_testcases(self, n_per_testcase=3):
      self._check_results()
      testcases = []
      nonfiltered_idxs = np.where(self.results.passed != None)[0]
      for f in nonfiltered_idxs:
          d_idx = f if self.run_idxs is None else self.run_idxs[f]
          # should be format_fn
          label, meta = self._label_meta(d_idx)
          # print(label, meta)
          succeed = self.results.passed[f]
          if succeed is not None:
              examples = self._form_examples_per_testcase_for_viz(
                  self.data[d_idx],
                  self.results.preds[d_idx],
                  self.results.confs[d_idx],
                  self.results.expect_results[f],
                  label,
                  meta,
                  nsamples=n_per_testcase,
              )
          else:
              examples = []
          if examples:
              testcases.append(
                  {
                      "examples": examples,
                      "succeed": int(succeed),
                      "tags": [],
                  }
              )
      return testcases
  
imports: from abc import ABC, abstractmethod
  import dill
  from munch import Munch
  import numpy
  import inspect
  from .expect import iter_with_optional, Expect
  from .viewer.test_summarizer import TestSummarizer
label_desc: Use image node_id 27 for calling the AbstractTest obj's underlying member method code with example usage: obj.form_testcases(n_per_testcase) and returns: testcases