Beispiel #1
0
    def test_address(self):
        from nose.util import absfile, src
        class TC(unittest.TestCase):
            def runTest(self):
                raise Exception("error")

        def dummy(i):
            pass

        def test():
            pass

        class Test:
            def test(self):
                pass

            def test_gen(self):
                def tryit(i):
                    pass
                for i in range (0, 2):
                    yield tryit, i

            def try_something(self, a, b):
                pass

        fl = src(absfile(__file__))
        case = nose.case.Test(TC())
        self.assertEqual(case.address(), (fl, __name__, 'TC.runTest'))

        case = nose.case.Test(nose.case.FunctionTestCase(test))
        self.assertEqual(case.address(), (fl, __name__, 'test'))

        case = nose.case.Test(nose.case.FunctionTestCase(
            dummy, arg=(1,), descriptor=test))
        self.assertEqual(case.address(), (fl, __name__, 'test'))

        case = nose.case.Test(nose.case.MethodTestCase(
                                  unbound_method(Test, Test.test)))
        self.assertEqual(case.address(), (fl, __name__, 'Test.test'))

        case = nose.case.Test(
            nose.case.MethodTestCase(unbound_method(Test, Test.try_something),
                                     arg=(1,2,),
                                     descriptor=unbound_method(Test,
                                                               Test.test_gen)))
        self.assertEqual(case.address(),
                         (fl, __name__, 'Test.test_gen'))

        case = nose.case.Test(
            nose.case.MethodTestCase(unbound_method(Test, Test.test_gen),
                                     test=dummy, arg=(1,)))
        self.assertEqual(case.address(),
                         (fl, __name__, 'Test.test_gen'))
Beispiel #2
0
 def address(self, case):
     if hasattr(case, 'address'):
         file, mod, call = case.address()
     elif hasattr(case, 'context'):
         file, mod, call = test_address(case.context)
     else:
         raise Exception("Unable to convert %s to address" % case)
     parts = []
     if file is None:
         if mod is None:
             raise Exception("Unaddressable case %s" % case)
         else:
             parts.append(mod)
     else:
         parts.append(file)
     if call is not None:
         parts.append(call)
     return ':'.join(map(str, parts))
 def address(case):
     if hasattr(case, "address"):
         file, mod, call = case.address()
     elif hasattr(case, "context"):
         file, mod, call = test_address(case.context)
     else:
         raise Exception("Unable to convert %s to address" % case)
     parts = []
     if file is None:
         if mod is None:
             raise Exception("Unaddressable case %s" % case)
         else:
             parts.append(mod)
     else:
         # strip __init__.py(c) from end of file part
         # if present, having it there confuses loader
         dirname, basename = os.path.split(file)
         if basename.startswith("__init__"):
             file = dirname
         parts.append(file)
     if call is not None:
         parts.append(call)
     return ":".join(map(str, parts))
def get_test_case_address(case):
    """
    Derives a string "address" of the case from its module/file name
    and function name

    :param case: test case object
    :return: String describing the location of the test
    :rtype: str
    """

    if hasattr(case, 'address'):
        file, mod, call = case.address()
    elif hasattr(case, 'context'):
        file, mod, call = native_get_test_address(case.context)
    else:
        raise Exception("Unable to convert %s to address" % case)

    parts = []
    if file is None:
        if mod is None:
            raise Exception("Unaddressable case %s" % case)
        else:
            parts.append(mod)
    else:
        # strip __init__.py(c) from end of file part
        # if present, having it there confuses loader
        dirname, basename = os.path.split(file)
        if basename.startswith('__init__'):
            file = dirname
        parts.append(file)

    if call is not None:
        parts.append(call)

    # do we hate unicode names? TODO: investigate
    return ':'.join(map(str, parts))