From 07164a2bedaa0b336761f7f0d3aca913a08c3d4f Mon Sep 17 00:00:00 2001 From: Phondanai Khanti Date: Mon, 25 Sep 2017 10:12:33 +0700 Subject: [PATCH 1/2] Add unit testing to module and use Travis-CI for building and testing --- .travis.yml | 8 ++++ requirements/base.txt | 4 ++ requirements/test.txt | 1 + tests/test_client.py | 96 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 .travis.yml create mode 100644 requirements/base.txt create mode 100644 requirements/test.txt create mode 100644 tests/test_client.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..04b11ec --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: python +python: + - "2.7" + - "3.6" +install: + - pip install -r requirements/test.txt +script: + py.test diff --git a/requirements/base.txt b/requirements/base.txt new file mode 100644 index 0000000..d53dc55 --- /dev/null +++ b/requirements/base.txt @@ -0,0 +1,4 @@ +-e . +certifi +paho-mqtt==1.2.3 +requests diff --git a/requirements/test.txt b/requirements/test.txt new file mode 100644 index 0000000..a3e81b8 --- /dev/null +++ b/requirements/test.txt @@ -0,0 +1 @@ +-r base.txt diff --git a/tests/test_client.py b/tests/test_client.py new file mode 100644 index 0000000..427d628 --- /dev/null +++ b/tests/test_client.py @@ -0,0 +1,96 @@ +import unittest + +import microgear +from microgear.client import create + + +class TestCreate(unittest.TestCase): + def setUp(self): + self.gearkey = '1a2b3c4d5e6f7g8' + self.gearsecret = 'A1B2C3d4e5f6G7H8i9j10k11L' + self.appid = 'FooBar' + self.gearalias = 'strecth' + self.gearalias_more_than_16_characters = 'jessiestretchbuster' + + def connection(self): + return 'Connected' + + def subscription(self, topic, message): + return topic + ' ' + message + + def disconnect(self): + return 'Disconnected' + + def test_create(self): + """ + Test create client with `gearkey`, `gearsecret` and `appid` paremeters. + """ + create(self.gearkey, self.gearsecret, self.appid) + + self.assertEqual(microgear.gearkey, self.gearkey) + self.assertEqual(microgear.gearsecret, self.gearsecret) + self.assertEqual(microgear.appid, self.appid) + + def test_create_with_gearalias(self): + """ + Test create client with `alias` argument settings. + """ + create(self.gearkey, + self.gearsecret, + self.appid, + {'alias': self.gearalias} + ) + + self.assertEqual(microgear.gearalias, self.gearalias) + + def test_create_with_gearalias(self): + """ + Test create client with `alias` argument settings more than 16 + characters.. + """ + create( + self.gearkey, + self.gearsecret, + self.appid, + {'alias': self.gearalias_more_than_16_characters} + ) + + self.assertNotEqual( + microgear.gearalias, + self.gearalias_more_than_16_characters + ) + self.assertEqual( + microgear.gearalias, + self.gearalias_more_than_16_characters[0:16] + ) + + def test_on_connect(self): + """ + Test create on_connect function. + """ + microgear.on_connect = self.connection + + self.assertEqual(microgear.on_connect(), 'Connected') + self.assertNotEqual(microgear.on_connect(), 'Disconnected') + + def test_on_message(self): + """ + Test create on_connect function. + """ + microgear.on_message = self.subscription + + self.assertEqual(microgear.on_message('topic', 'message'), 'topic message') + self.assertEqual(microgear.on_message('', 'message'), ' message') + self.assertEqual(microgear.on_message('topic', ''), 'topic ') + + def test_on_disconnect(self): + """ + Test create on_connect function. + """ + microgear.on_disconnect = self.disconnect + + self.assertEqual(microgear.on_disconnect(), 'Disconnected') + self.assertNotEqual(microgear.on_disconnect(), 'Connected') + +#if __name__ == '__main__': +# unittest.main() From 349beaba0ee65aeae74d7bd93907d633392fcf48 Mon Sep 17 00:00:00 2001 From: Phondanai Khanti Date: Wed, 27 Sep 2017 13:45:33 +0700 Subject: [PATCH 2/2] Modify test script for Travis-CI, add more test case --- .travis.yml | 2 +- tests/test_client.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 04b11ec..36c0869 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ python: install: - pip install -r requirements/test.txt script: - py.test + py.test -v diff --git a/tests/test_client.py b/tests/test_client.py index 427d628..11f01f1 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,7 +4,7 @@ from microgear.client import create -class TestCreate(unittest.TestCase): +class ClientCreateTests(unittest.TestCase): def setUp(self): self.gearkey = '1a2b3c4d5e6f7g8' self.gearsecret = 'A1B2C3d4e5f6G7H8i9j10k11L' @@ -12,6 +12,13 @@ def setUp(self): self.gearalias = 'strecth' self.gearalias_more_than_16_characters = 'jessiestretchbuster' + + def tearDown(self): + microgear.client.subscribe_list = [] + + def test_default_global_variables(self): + self.assertEqual(microgear.client.subscribe_list, []) + def connection(self): return 'Connected' @@ -21,17 +28,19 @@ def subscription(self, topic, message): def disconnect(self): return 'Disconnected' + def test_create(self): """ Test create client with `gearkey`, `gearsecret` and `appid` paremeters. """ + create(self.gearkey, self.gearsecret, self.appid) self.assertEqual(microgear.gearkey, self.gearkey) self.assertEqual(microgear.gearsecret, self.gearsecret) self.assertEqual(microgear.appid, self.appid) - def test_create_with_gearalias(self): + def test_create_with_gear_alias(self): """ Test create client with `alias` argument settings. """ @@ -43,7 +52,7 @@ def test_create_with_gearalias(self): self.assertEqual(microgear.gearalias, self.gearalias) - def test_create_with_gearalias(self): + def test_create_with_gear_alias(self): """ Test create client with `alias` argument settings more than 16 characters.. @@ -92,5 +101,9 @@ def test_on_disconnect(self): self.assertEqual(microgear.on_disconnect(), 'Disconnected') self.assertNotEqual(microgear.on_disconnect(), 'Connected') -#if __name__ == '__main__': -# unittest.main() + def test_client_subscribe(self): + microgear.client.subscribe_list = [] + microgear.appid = self.appid + microgear.client.subscribe('message') + self.assertEqual(microgear.client.subscribe_list, ['/FooBarmessage']) +