bots: Simplify automated testing library.
MODIFY
contrib_bots/bots/define/test_define.py
contrib_bots/bots/define/test_define.py
@@ -5,36 +5,25 @@ from __future__ import print_function
import os
import sys
-import unittest
-from unittest import TestCase
our_dir = os.path.dirname(os.path.abspath(__file__))
-
# For dev setups, we can find the API in the repo itself.
if os.path.exists(os.path.join(our_dir, '..')):
sys.path.insert(0, '..')
from bots_test_lib import BotTestCase
-class TestDefineBot(TestCase):
- def setUp(self):
- # Messages to be sent to bot for testing.
- self.request_messages = [
+class TestDefineBot(BotTestCase):
+ bot_name = "define"
+
+ def test_bot(self):
+ self.assert_bot_output(
{'content': "foo", 'type': "private", 'sender_email': "foo"},
+ "**foo**:\nDefinition not available."
+ )
+ self.assert_bot_output(
{'content': "cat", 'type': "stream", 'display_recipient': "foo", 'subject': "foo"},
- ]
- # Reply messages from the test bot.
- self.bot_response_messages = [
- "**foo**:\nDefinition not available.",
("**cat**:\n\n* (**noun**) a small domesticated carnivorous mammal "
"with soft fur, a short snout, and retractile claws. It is widely "
"kept as a pet or for catching mice, and many breeds have been "
"developed.\n&nbsp;&nbsp;their pet cat\n\n"),
- ]
-
- def runTest(self):
- # type: None -> None
- # Edit bot_module to test different bots, the below code can be looped for all the bots.
- bot_module = os.path.join(our_dir, "define.py")
- test_case = BotTestCase()
- test_case.bot_test(messages=self.request_messages, bot_module=bot_module,
- bot_response=self.bot_response_messages)
+ )

MODIFY
contrib_bots/bots_test_lib.py
contrib_bots/bots_test_lib.py
@@ -14,7 +14,19 @@ from bot_lib import StateHandler
from contrib_bots import bot_lib
from six.moves import zip
-class BotTestCase():
+from unittest import TestCase
+
+current_dir = os.path.dirname(os.path.abspath(__file__))
+
+class BotTestCase(TestCase):
+ bot_name = None
+
+ def assert_bot_output(self, request, response):
+ # type: (str, str) -> None
+ bot_module = os.path.join(current_dir, "bots",
+ self.bot_name, self.bot_name + ".py")
+ self.bot_test(messages=[request], bot_module=bot_module,
+ bot_response=[response])
def mock_test(self, messages, message_handler, bot_response):
# type: (List[Dict[str, str]], Function) -> None
@@ -37,6 +49,5 @@ class BotTestCase():
return message_handler
def bot_test(self, messages, bot_module, bot_response):
-
message_handler = self.bot_to_run(bot_module)
self.mock_test(messages=messages, message_handler=message_handler, bot_response=bot_response)

bots: Simplify automated testing library.