Пример #1
0
 def loadTestsFromName(self, event):
     """Load tests from event.name if it names a test class/method"""
     name = event.name
     module = event.module
     try:
         result = util.test_from_name(name, module)
     except (AttributeError, ImportError):
         event.handled = True
         return event.loader.failedLoadTests(name, sys.exc_info())
     if result is None:
         return
     parent, obj, name, index = result
     if isinstance(obj, type) and not issubclass(obj, unittest.TestCase):
         # name is a test case class
         event.extraTests.append(self._loadTestsFromTestClass(event, obj))
     elif (
         isinstance(parent, type)
         and not issubclass(parent, unittest.TestCase)
         and not util.isgenerator(obj)
         and not hasattr(obj, "paramList")
     ):
         # name is a single test method
         event.extraTests.append(
             util.transplant_class(MethodTestCase(parent), parent.__module__)(
                 obj.__name__
             )
         )
Пример #2
0
    def loadTestsFromName(self, event):
        """Load tests from generator named on command line"""
        original_name = name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError):
            event.handled = True
            return event.loader.failedLoadTests(name, sys.exc_info())
        if result is None:
            # we can't find it - let the default case handle it
            return

        parent, obj, name, index = result
        if not util.isgenerator(obj):
            return

        if (index is None and not
            isinstance(parent, type) and not
            isinstance(obj, types.FunctionType)):
            log.debug("Don't know how to load generator tests from %s", obj)
            return

        if (parent and
            isinstance(parent, type) and
            issubclass(parent, unittest.TestCase)):
            # generator method in test case
            instance = parent(obj.__name__)
            tests = list(
                self._testsFromGenerator(
                    event, obj.__name__, obj(instance), parent)
            )
        elif (parent and
              isinstance(parent, type)):
            # generator method in test class
            method = obj
            instance = parent()
            tests = list(
                self._testsFromGeneratorMethod(event, name, method, instance)
            )
        else:
            # generator func
            tests = list(self._testsFromGeneratorFunc(event, obj))

        if index is not None:
            try:
                tests = [tests[index - 1]]
            except IndexError:
                raise exceptions.TestNotFoundError(original_name)

        suite = event.loader.suiteClass()
        suite.addTests(tests)
        event.handled = True
        return suite
Пример #3
0
    def loadTestsFromName(self, event):
        """Load tests from generator named on command line"""
        original_name = name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError) as e:
            event.handled = True
            return event.loader.failedLoadTests(name, e)
        if result is None:
            # we can't find it - let the default case handle it
            return

        parent, obj, name, index = result
        if not util.isgenerator(obj):
            return

        if (index is None and not
            isinstance(parent, type) and not
            isinstance(obj, types.FunctionType)):
            log.debug("Don't know how to load generator tests from %s", obj)
            return

        if (parent and
            isinstance(parent, type) and
            issubclass(parent, unittest.TestCase)):
            # generator method in test case
            instance = parent(obj.__name__)
            tests = list(
                self._testsFromGenerator(
                    event, obj.__name__, obj(instance), parent)
            )
        elif (parent and
              isinstance(parent, type)):
              # generator method in test class
            method = obj
            instance = parent()
            tests = list(
                self._testsFromGeneratorMethod(event, name, method, instance)
            )
        else:
            # generator func
            tests = list(self._testsFromGeneratorFunc(event, obj))

        if index is not None:
            try:
                tests = [tests[index - 1]]
            except IndexError:
                raise exceptions.TestNotFoundError(original_name)

        suite = event.loader.suiteClass()
        suite.addTests(tests)
        event.handled = True
        return suite
Пример #4
0
    def loadTestsFromName(self, event):
        """Load parameterized test named on command line"""
        original_name = name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError):
            event.handled = True
            return event.loader.failedLoadTests(name, sys.exc_info())
        if result is None:
            # we can't find it - let the default case handle it
            return

        parent, obj, fqname, index = result
        if not hasattr(obj, 'paramList'):
            return

        if (index is None and not
            isinstance(parent, type) and not
            isinstance(obj, types.FunctionType)):
            log.debug(
                "Don't know how to load parameterized tests from %s", obj)
            return

        if (parent and
            isinstance(parent, type) and
            issubclass(parent, unittest.TestCase)):
            # parameterized method in test case
            names = self._generate(event, obj.__name__, obj, parent)
            tests = [parent(n) for n in names]
        elif (parent and
              isinstance(parent, type)):
            # parameterized method in test class
            names = self._generate(event, obj.__name__, obj, parent)
            tests = [MethodTestCase(parent)(name) for name in names]
        else:
            # parameterized func
            tests = list(self._generateFuncTests(obj))

        if index is not None:
            try:
                tests = [tests[index - 1]]
            except IndexError:
                raise exceptions.TestNotFoundError(original_name)

        suite = event.loader.suiteClass()
        suite.addTests(tests)
        event.handled = True
        return suite
Пример #5
0
    def loadTestsFromName(self, event):
        """Load parameterized test named on command line"""
        original_name = name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError) as e:
            event.handled = True
            return event.loader.failedLoadTests(name, e)
        if result is None:
            # we can't find it - let the default case handle it
            return

        parent, obj, fqname, index = result
        if not hasattr(obj, 'paramList'):
            return

        if (index is None and not
            isinstance(parent, type) and not
            isinstance(obj, types.FunctionType)):
            log.debug(
                "Don't know how to load parameterized tests from %s", obj)
            return

        if (parent and
            isinstance(parent, type) and
            issubclass(parent, unittest.TestCase)):
            # generator method
            names = self._generate(event, obj.__name__, obj, parent)
            tests = [parent(n) for n in names]
        elif (parent and
              isinstance(parent, type)):
            names = self._generate(event, name, obj, parent)
            tests = [MethodTestCase(parent)(name) for name in names]
        else:
            # generator func
            tests = list(self._generateFuncTests(obj))

        if index is not None:
            try:
                tests = [tests[index - 1]]
            except IndexError:
                raise exceptions.TestNotFoundError(original_name)

        suite = event.loader.suiteClass()
        suite.addTests(tests)
        event.handled = True
        return suite
Пример #6
0
    def loadTestsFromName(self, event):
        """Load test if event.name is the name of a test function"""
        name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError):
            event.handled = True
            return event.loader.failedLoadTests(name, sys.exc_info())
        if result is None:
            return

        parent, obj, name, index = result
        if (isinstance(obj, types.FunctionType) and not util.isgenerator(obj)
                and not hasattr(obj, 'paramList')
                and util.num_expected_args(obj) == 0):
            suite = event.loader.suiteClass()
            suite.addTests(self._createTests(obj))
            event.handled = True
            return suite
Пример #7
0
 def loadTestsFromName(self, event):
     """Load tests from event.name if it names a test case/method"""
     name = event.name
     module = event.module
     try:
         result = util.test_from_name(name, module)
     except (AttributeError, ImportError) as e:
         event.handled = True
         return event.loader.failedLoadTests(name, e)
     if result is None:
         return
     parent, obj, name, index = result
     if isinstance(obj, type) and issubclass(obj, unittest.TestCase):
         # name is a test case class
         event.extraTests.append(self._loadTestsFromTestCase(event, obj))
     elif (isinstance(parent, type) and
           issubclass(parent, unittest.TestCase) and not
           util.isgenerator(obj) and not
           hasattr(obj, 'paramList')):
         # name is a single test method
         event.extraTests.append(parent(obj.__name__))
Пример #8
0
    def loadTestsFromName(self, event):
        """Load test if event.name is the name of a test function"""
        name = event.name
        module = event.module
        try:
            result = util.test_from_name(name, module)
        except (AttributeError, ImportError) as e:
            event.handled = True
            return event.loader.failedLoadTests(name, e)
        if result is None:
            return

        parent, obj, name, index = result
        if (isinstance(obj, types.FunctionType) and not
            util.isgenerator(obj) and not
            hasattr(obj, 'paramList') and not
            inspect.getargspec(obj).args):
            suite = event.loader.suiteClass()
            suite.addTests(self._createTests(obj))
            event.handled = True
            return suite
Пример #9
0
 def loadTestsFromName(self, event):
     """Load tests from event.name if it names a test case/method"""
     name = event.name
     module = event.module
     log.debug("load %s from %s", name, module)
     try:
         result = util.test_from_name(name, module)
     except (AttributeError, ImportError) as e:
         event.handled = True
         return event.loader.failedLoadTests(name, e)
     if result is None:
         return
     parent, obj, name, index = result
     if isinstance(obj, type) and issubclass(obj, unittest.TestCase):
         # name is a test case class
         event.extraTests.append(self._loadTestsFromTestCase(event, obj))
     elif (isinstance(parent, type)
           and issubclass(parent, unittest.TestCase)
           and not util.isgenerator(obj) and not hasattr(obj, 'paramList')):
         # name is a single test method
         event.extraTests.append(parent(obj.__name__))