2018-07-21 19:21:18 -04:00
|
|
|
"""Base libarary for test cases"""
|
|
|
|
|
|
|
|
___license___ = "MIT"
|
|
|
|
|
2018-07-16 18:04:42 -04:00
|
|
|
import sys
|
|
|
|
|
|
|
|
class SkipTest(Exception):
|
|
|
|
"""Indicates a test has been skipped"""
|
|
|
|
|
|
|
|
class FailTest(Exception):
|
|
|
|
"""Inidcates a failing test"""
|
|
|
|
def __init__(self, message=None):
|
|
|
|
self.message = message
|
|
|
|
|
|
|
|
class TestCase(object):
|
|
|
|
def run(self):
|
|
|
|
test_class = type(self).__name__
|
2018-07-22 06:20:56 -04:00
|
|
|
self.setUpClass()
|
2018-07-16 18:04:42 -04:00
|
|
|
self.count_pass = 0
|
|
|
|
self.count_fail = 0
|
|
|
|
self.count_skip = 0
|
|
|
|
for method in dir(self):
|
|
|
|
if not method.startswith("test"):
|
|
|
|
continue
|
|
|
|
try:
|
2018-07-22 06:20:56 -04:00
|
|
|
self.setUp()
|
2018-07-16 18:04:42 -04:00
|
|
|
getattr(self, method)()
|
2018-07-22 06:20:56 -04:00
|
|
|
self.tearDown()
|
2018-07-16 18:04:42 -04:00
|
|
|
print("%s.%s [PASS]" % (test_class, method))
|
|
|
|
self.count_pass += 1
|
|
|
|
except SkipTest as e:
|
|
|
|
print("%s.%s [SKIP]" % (test_class, method))
|
|
|
|
self.count_skip += 1
|
|
|
|
except FailTest as e:
|
|
|
|
print("%s.%s [FAIL]" % (test_class, method))
|
|
|
|
print(e.message + "\n")
|
|
|
|
self.count_fail += 1
|
|
|
|
except Exception as e:
|
|
|
|
print("%s.%s [FATAL]" % (test_class, method))
|
|
|
|
sys.print_exception(e)
|
|
|
|
print("")
|
|
|
|
self.count_fail += 1
|
2018-07-22 06:20:56 -04:00
|
|
|
self.tearDownClass()
|
2018-07-16 18:04:42 -04:00
|
|
|
return self.count_fail == 0
|
|
|
|
|
|
|
|
def run_standalone(self):
|
|
|
|
self.run()
|
|
|
|
print_result(self.count_pass, self.count_fail, self.count_skip)
|
|
|
|
|
|
|
|
def runSingle(self, function):
|
|
|
|
print(self)
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
pass
|
|
|
|
|
2018-07-22 06:20:56 -04:00
|
|
|
def setUpClass(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def tearDownClass(self):
|
|
|
|
pass
|
|
|
|
|
2018-07-16 18:04:42 -04:00
|
|
|
def assertEqual(self, actual, expected):
|
|
|
|
if not actual == expected:
|
|
|
|
raise FailTest("Expected %s to equal %s" % (actual, expected))
|
|
|
|
|
|
|
|
def assertTrue(self, actual):
|
|
|
|
self.assertEqual(actual, True)
|
|
|
|
|
|
|
|
def assertFalse(self, actual):
|
|
|
|
self.assertEqual(actual, False)
|
|
|
|
|
|
|
|
def skip(self):
|
|
|
|
raise SkipTest()
|
|
|
|
|
|
|
|
def print_result(count_pass, count_fail, count_skip):
|
|
|
|
print("PASS: %s FAIL: %s SKIP: %s" % (count_pass, count_fail, count_skip))
|