~unifield-team/unifield-wm/us-826

« back to all changes in this revision

Viewing changes to unifield_tests/test_runner.py

  • Committer: jf
  • Date: 2011-03-23 13:23:55 UTC
  • Revision ID: jf@tempo4-20110323132355-agyf1soy7m5ewatr
Initial Import

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
# -*- coding: utf8 -*-
3
 
from __future__ import print_function
4
 
import unittest
5
 
import HTMLTestRunner
6
 
from os import walk
7
 
from os import path
8
 
import sys
9
 
from tests import colors
10
 
 
11
 
# TODO: Read a file to parse some configuration and read which directory to browse
12
 
path_for_tests = 'tests'
13
 
 
14
 
def _separator():
15
 
    print ('#' * 70)
16
 
 
17
 
def main():
18
 
    """
19
 
    Launch all 'test_' files in a specific directory
20
 
    """
21
 
    # Prepare some values
22
 
    suite = unittest.TestSuite() # the suite of tests
23
 
    test_modules = [] # modules that are in 'tests' directory
24
 
    added_paths = [] # path added to PYTHONPATH
25
 
    c = colors.TerminalColors()
26
 
 
27
 
    _separator()
28
 
    # Browse the directory to search all tests
29
 
    print (c.BGreen + 'Browsing' + c.Color_Off + ' %s directory.' % path_for_tests)
30
 
    for racine, _, files in walk(path_for_tests):
31
 
        directory = path.basename(racine)
32
 
        if directory == 'tests':
33
 
            for f in files:
34
 
                if (f.startswith('test') and f.endswith('.py') and f != 'test.py'):
35
 
                    name = path.join(racine, f)
36
 
                    test_modules.append((name, f[:-3]))
37
 
    # Inform how many modules was found
38
 
    print ('%d module(s) found' % len(test_modules))
39
 
 
40
 
#     _separator()
41
 
#     # Launch a python script that runs some tasks before tests
42
 
#     print ('Launch pre-tasks')
43
 
#     execfile('pre_runner.py')
44
 
 
45
 
    _separator()
46
 
    # Import found modules
47
 
    print(c.BGreen + 'Import' + c.Color_Off + ' modules + instanciate them')
48
 
    #+ Sort them by module name (x[1])
49
 
    for module_info in sorted(test_modules, key=lambda x: x[1]):
50
 
        module_path = path.dirname(module_info[0])
51
 
        if module_path not in sys.path:
52
 
            sys.path.append(module_path)
53
 
            added_paths.append(module_path)
54
 
 
55
 
        module = __import__(module_info[1])
56
 
        if 'get_test_class' in module.__dict__:
57
 
            class_type = module.get_test_class()
58
 
            print ("%s module:" % (class_type.__module__,))
59
 
            test_suite = unittest.TestSuite((unittest.makeSuite(class_type), ))
60
 
            suite.addTest(test_suite)
61
 
 
62
 
    _separator()
63
 
    # Create a file for the output result
64
 
    output = file('output.html', 'wb')
65
 
    # Run tests
66
 
    campaign = HTMLTestRunner.HTMLTestRunner(
67
 
        stream=output,
68
 
        title='Example tests',
69
 
        description='A suite of tests that permit to test PyUnit class'
70
 
    )
71
 
    print('Launch UnifieldTest ' + c.BGreen + 'Campaign' + c.Color_Off)
72
 
    print('----------------------------\n')
73
 
    print('Note: 1 point represents a test. F means Fail. E means Error.')
74
 
    campaign.run(suite)
75
 
 
76
 
    _separator()
77
 
    print ('Clean used paths')
78
 
    # Delete all paths added to the PYTHONPATH
79
 
    for added_path in added_paths:
80
 
        sys.path.remove(added_path)
81
 
 
82
 
#     _separator()
83
 
#     # Launch a python script that runs some tasks after all tests
84
 
#     print ('Launch post-tasks')
85
 
#     execfile('post_runner.py')
86
 
 
87
 
    _separator()
88
 
 
89
 
if __name__ == "__main__":
90
 
    main()
91
 
 
92
 
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
 
 
b'\\ No newline at end of file'