class_docstr: TestResult contains information useful for tracking test results
class_docstr_tok: ["TestResult","contains","information","useful","for","tracking","test","results"]
docstr: Returns an array of strings describing errors in the publisher tests
  
  The strings take the form:
  
      [output:descriptor]: (Error Type) Error message
docstr_tok: ["Returns","an","array","of","strings","describing","errors","in","the","publisher","tests","The","strings","take","the","form",":","[","output",":","descriptor","]",":","(","Error","Type",")","Error","message"]
code: def publisher_errors(self):
      """Returns an array of strings describing errors in the publisher tests
  
      The strings take the form:
  
          [output:descriptor]: (Error Type) Error message
      """
      if not self.publisher_tests_were_run:
          return []
  
      return [
          "{}: {}".format(
              item["output_descriptor"],
              "({}) {}".format(
                  type(item["error"]).__name__, item["error"]
              )
              if "error" in item
              else item["failure"],
          )
          for item in self._publication_results
          if not item["success"]
      ]
  
imports: from collections import defaultdict
  import textwrap
  from streamalert.shared import rule
  from streamalert.shared.logger import get_logger
  from streamalert_cli.test.event import TestEvent
  from streamalert_cli.test.format import format_green, format_red, format_underline
label_desc: Use image node_id 22 for calling the TestResult obj's underlying member method code with example usage: obj.publisher_errors() and returns: unknown, list