def call(self, cmdobj, args, msg=None, cmdset=None, noansi=True, caller=None, receiver=None):
        caller = caller if caller else self.char1
        receiver = receiver if receiver else caller
        cmdobj.caller = caller
        cmdobj.cmdstring = cmdobj.key
        cmdobj.args = args
        cmdobj.cmdset = cmdset
        cmdobj.session = SESSIONS.session_from_sessid(1)
        cmdobj.player = self.player
        cmdobj.raw_string = cmdobj.key + " " + args
        cmdobj.obj = caller if caller else self.char1
        # test
        old_msg = receiver.msg
        try:
            receiver.msg = Mock()
            cmdobj.at_pre_cmd()
            cmdobj.parse()
            cmdobj.func()
            cmdobj.at_post_cmd()
            # clean out prettytable sugar
            stored_msg = [args[0] for name, args, kwargs in receiver.msg.mock_calls]
            returned_msg = "||".join(_RE.sub("", mess) for mess in stored_msg)
            returned_msg = ansi.parse_ansi(returned_msg, strip_ansi=noansi).strip()
            if msg is not None:
                if msg == "" and returned_msg or not returned_msg.startswith(msg.strip()):
                    sep1 = "\n" + "="*30 + "Wanted message" + "="*34 + "\n"
                    sep2 = "\n" + "="*30 + "Returned message" + "="*32 + "\n"
                    sep3 = "\n" + "="*78
                    retval = sep1 + msg.strip() + sep2 + returned_msg + sep3
                    raise AssertionError(retval)
        finally:
            receiver.msg = old_msg

# ------------------------------------------------------------
# Individual module Tests
# ------------------------------------------------------------
Test a command by assigning all the needed
dataset/ETHPy150Open evennia/evennia/evennia/commands/default/tests.py/CommandTest.call