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:
parent
94b7c2eaef
commit
9c37f92a01
3 changed files with 34 additions and 5 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue