class_docstr: Test class for SlackOutput
class_docstr_tok: ["Test","class","for","SlackOutput"]
docstr: SlackOutput - Max Attachment Reached
docstr_tok: ["SlackOutput","-","Max","Attachment","Reached"]
code: def test_max_attachments(self, log_mock):
      """SlackOutput - Max Attachment Reached"""
      alert = get_alert()
      alert.record = {"info": "test" * 20000}
      output = MagicMock(spec=SlackOutput)
      alert_publication = compose_alert(alert, output, "asdf")
      SlackOutput._format_default_attachments(
          alert, alert_publication, "foo"
      )
      log_mock.assert_called_with(
          "%s: %d-part message truncated to %d parts",
          alert_publication,
          21,
          20,
      )
  
imports: from collections import Counter, OrderedDict
  from mock import patch, Mock, MagicMock
  from nose.tools import assert_equal, assert_false, assert_true, assert_set_equal
  from streamalert.alert_processor.helpers import compose_alert
  from streamalert.alert_processor.outputs.slack import SlackOutput
  from tests.unit.streamalert.alert_processor.helpers import get_random_alert, get_alert
label_desc: Use image node_id 20 for calling the TestSlackOutput obj's underlying member method code with example usage: obj.test_max_attachments(log_mock) without return types