#! /usr/bin/env python """\ UnitTest runner. This one searches for all files named test_*.py and collects all test cases from these files. Finally it runs all tests and prints a summary. """ import unittest import sys import os import time # inject local copy to avoid testing the installed version instead of the # working copy (only for 2.x as the sources would need to be translated with # 2to3 for Python 3, use installed module instead for Python 3). if sys.version_info < (3, 0): sys.path.insert(0, '..') import serial print("Patching sys.path to test local version. Testing Version: %s" % (serial.VERSION,)) PORT = 'loop://' if len(sys.argv) > 1: PORT = sys.argv[1] # find files and the tests in them mainsuite = unittest.TestSuite() for modulename in [os.path.splitext(x)[0] for x in os.listdir('.') if x != __file__ and x.startswith("test") and x.endswith(".py") ]: try: module = __import__(modulename) except ImportError: print("skipping %s" % (modulename,)) else: module.PORT = PORT testsuite = unittest.findTestCases(module) print("found %s tests in %r" % (testsuite.countTestCases(), modulename)) mainsuite.addTest(testsuite) verbosity = 1 if '-v' in sys.argv[1:]: verbosity = 2 # run the collected tests testRunner = unittest.TextTestRunner(verbosity=verbosity) #~ testRunner = unittest.ConsoleTestRunner(verbosity=verbosity) result = testRunner.run(mainsuite) # set exit code accordingly to test results sys.exit(not result.wasSuccessful())