26
def discover_test_names(module_or_name):
27
if isinstance(module_or_name, basestring):
28
match = module_or_name
31
file_names = os.listdir(os.path.dirname(__file__))
33
for file_name in file_names:
34
name, ext = os.path.splitext(file_name)
35
if name.startswith('test_') and ext == '.py' and match in name:
36
test_names.add("%s.%s" % (__name__, name))
26
40
def load_tests(basic_tests, module, loader):
27
if module == 'discover':
28
here = os.path.abspath(os.path.dirname(__file__))
29
basic_tests.addTest(loader.discover(here))
31
full_name = "%s.%s" % (__name__, module)
32
basic_tests.addTest(loader.loadTestsFromModuleNames([full_name]))
41
test_names = discover_test_names(module)
42
basic_tests.addTest(loader.loadTestsFromModuleNames(test_names))
36
46
class MockMethod(object):
39
def bind(klass, test_instance, obj, method_name, return_value=None):
49
def bind(klass, test_instance, obj, method_name,
50
return_value=None, raise_error=None, raise_on=1):
40
51
original_method = getattr(obj, method_name)
41
52
test_instance.addCleanup(setattr, obj, method_name, original_method)
42
setattr(obj, method_name, klass(return_value))
53
setattr(obj, method_name, klass(return_value, raise_error, raise_on))
44
def __init__(self, return_value=None):
55
def __init__(self, return_value=None, raise_error=None, raise_on=1):
45
56
self.called = False
46
57
self.call_count = 0
49
60
self.return_value = return_value
61
self.raise_error = raise_error
62
self.raise_on = raise_on
51
64
def __call__(self, *args, **kwargs):
53
66
self.call_count += 1
55
68
self.kwargs = kwargs
69
if self.raise_error is not None and self.call_count == self.raise_on:
70
raise self.raise_error
56
71
return self.return_value