source: inundation/ga/storm_surge/pyvolution/test_all.py @ 467

Last change on this file since 467 was 464, checked in by ole, 20 years ago
File size: 1.5 KB
Line 
1"""Regression testing framework
2This module will search for scripts in the same directory named
3test_*.py.  Each such script should be a test suite that tests a
4module through PyUnit. This script will aggregate all
5found test suites into one big test suite and run them all at once.
6"""
7
8# Author: Mark Pilgrim
9# Modified by Ole Nielsen
10
11import unittest
12import os
13
14
15#List files that should be excluded from the testing process.
16#E.g. if they are known to fail and under development
17#exclude = ['test_least_squares.py', 'test_cg_solve.py',
18          # 'test_interpolate_sww.py']
19exclude = ['test_cg_solve.py']
20
21
22
23def regressionTest():
24    import sys, os, re, unittest   
25    path = os.path.split(sys.argv[0])[0] or os.getcwd()
26    files = os.listdir(path)
27    test = re.compile('^test_[\w]*.py$', re.IGNORECASE)
28    files = filter(test.search, files)
29
30    try:
31        files.remove(__file__)  #Remove self from list (Ver 2.3. or later)
32    except:
33        files.remove('test_all.py') 
34
35
36    for file in exclude:
37        files.remove(file)
38        print 'WARNING: File '+ file + ' excluded from testing'
39       
40
41    filenameToModuleName = lambda f: os.path.splitext(f)[0]
42    moduleNames = map(filenameToModuleName, files)
43    modules = map(__import__, moduleNames)
44    load = unittest.defaultTestLoader.loadTestsFromModule
45    return unittest.TestSuite(map(load, modules))
46
47if __name__ == '__main__':
48
49    os.system('python compile.py') #Attempt to compile all extensions
50   
51    unittest.main(defaultTest='regressionTest')
52   
Note: See TracBrowser for help on using the repository browser.