class_docstr: Test class for Teams
class_docstr_tok: ["Test","class","for","Teams"]
docstr: TeamsOutput - Dispatch Failure, No Creds
docstr_tok: ["TeamsOutput","-","Dispatch","Failure",",","No","Creds"]
code: def test_dispatch_no_creds(self, creds_mock, log_mock):
      """TeamsOutput - Dispatch Failure, No Creds"""
      creds_mock.return_value = None
      descriptor = "bad_descriptor"
  
      # Tests
      assert_false(
          self._dispatcher.dispatch(
              get_alert(), ":".join([self.SERVICE, descriptor])
          )
      )
      log_mock.assert_called()
      log_mock.assert_has_calls(
          [
              call(
                  "No credentials found for descriptor: %s", descriptor
              ),
              call(
                  "Failed to send alert to %s:%s",
                  self.SERVICE,
                  descriptor,
              ),
          ],
          any_order=False,
      )
  
imports: import pymsteams
  from pymsteams import TeamsWebhookException
  from mock import MagicMock, Mock, patch, call
  from nose.tools import assert_equal, assert_false, assert_true
  from streamalert.alert_processor.helpers import compose_alert
  from streamalert.alert_processor.outputs.teams import TeamsOutput
  from tests.unit.streamalert.alert_processor.helpers import get_alert, get_random_alert
label_desc: Use image node_id 18 for calling the TestTeamsOutput obj's underlying member method code with example usage: obj.test_dispatch_no_creds(creds_mock, log_mock) without return types