Я хотел бы осветить on_text
способ с модулем тест. Мне хочется проверить on_text
с сообщением un-unicode, чтобы увидеть, что был вызван send_message
.Mock Tornado class in Python
class MyTornadoClass(object):
@gen.coroutine
def on_text(self, message):
"""
User message controller
"""
id_ = message.message_id
chat = message.chat
text = message.text.strip().replace(" ", "-").replace("[()&?]", "")
if not self.is_ascii(text):
yield self.send_message(chat.id_, "Sorry, I didn't find anything according to you request. Try again!",
reply_to_message_id=id_)
else:
yield self.perform_search(text, id_, chat)
Мой издевательский тест:
def test_app(self):
message = types.Message({'message_id': '1', 'text': 'Ў',
'chat': {"id": 227071993, "first_name": "Sergei", "last_name": "Rudenkov",
"type": "private"}, 'from': 343})
zombie = bot_telegram.starter.MyTornadoClass('API_TOKEN', 'SO_WS_URL')
zombie.on_text(message)
with mock.patch.object(bot_telegram.starter.MyTornadoClass, 'send_message') as mock_zombie:
mock_zombie.assert_called_with(227071993,
"""Sorry, I didn't find anything according to you request.
Try again!""",
1)
Я получаю исключение:
Traceback (most recent call last):
File "/home/sergei-rudenkov/PycharmProjects/python_tasks/bot_telegram/unit_tests/telezombie_api/starter_test.py", line 21, in test_app
1)
File "/usr/local/lib/python3.5/dist-packages/mock/mock.py", line 925, in assert_called_with
raise AssertionError('Expected call: %s\nNot called' % (expected,))
AssertionError: Expected call: send_message(227071993, "Sorry, I didn't find anything according to you request.\n Try again!", 1)
Not called
----------------------------------------------------------------------
Ran 1 test in 0.006s
FAILED (failures=1)
Я не знаю, что я делаю неправильно. Пожалуйста, укажите мне свою ошибку.
Что такое 'is_ascii'? – dm03514
просто метод, который проверяет, является ли 'текст' состоящим из символов ascii –