zulip_bots: Add common tests.

unittest includes by default all module-level classes that inherit
from TestCase and implement at least one method starting with 'test'.
Since it doesn't provide a convenient way for excluding TestSuites,
we need to manually filter out the unwanted testing of our test base
class itself.
This commit is contained in:
derAnfaenger 2017-11-14 11:25:24 +01:00 committed by Tim Abbott
parent 94b7c2eaef
commit 9c37f92a01
3 changed files with 34 additions and 5 deletions

View file

@ -8,6 +8,7 @@ import sys
import argparse
import glob
import unittest
from unittest import TestCase, TestSuite
def load_tests_from_modules(names, template):
loader = unittest.defaultTestLoader
@ -91,6 +92,19 @@ def main():
else:
test_suites = load_all_tests()
def filter_tests(tests):
# type: (Union[TestSuite, TestCase]) -> TestSuite
filtered_tests = TestSuite()
for test in tests:
if isinstance(test, TestCase):
# Exclude test base class from being tested.
if test.__class__.__name__ not in ['BotTestCase', 'BotTestCaseBase']:
filtered_tests.addTest(test)
else:
filtered_tests.addTest(filter_tests(test))
return filtered_tests
test_suites = filter_tests(test_suites)
suite = unittest.TestSuite(test_suites)
runner = unittest.TextTestRunner(verbosity=2)
result = runner.run(suite)