Skip to content

Test discovery doesn't work #17092

Closed
Closed

Description

Testing #17055

Screen.Recording.2021-08-24.at.11.47.17.mov

Activity

  1. jrieken commented on Aug 24, 2021

    @jrieken
    Author

    readings from output channel

    cwd: ~/Code/_samples/devfest
    > /usr/bin/python3 -c "
    import unittest
    import inspect
    
    def get_sourceline(obj):
        s, n = inspect.getsourcelines(obj)
        for i, v in enumerate(s):
            if v.strip().startswith('def'):
                return str(n+i)
        return '*'
    
    def generate_test_cases(suite):
        for test in suite:
            if isinstance(test, unittest.TestCase):
                yield test
            else:
                for test_case in generate_test_cases(test):
                    yield test_case
    
    loader = unittest.TestLoader()
    suite = loader.discover(".", pattern="*test.py")
    
    print("start")  # Don't remove this line
    loader_errors = []
    for s in generate_test_cases(suite):
        tm = getattr(s, s._testMethodName)
        testId = s.id()
        if testId.startswith("unittest.loader._FailedTest"):
            loader_errors.append(s._exception)
        else:
            print(testId.replace(".", ":") + ":" + get_sourceline(tm))
    
    for error in loader_errors:
        try:
            print("=== exception start ===")
            print(error.msg)
            print("=== exception end ===")
        except:
            pass
    "
    cwd: ~/Code/_samples/devfest
    > /usr/bin/python3 -c "
    import unittest
    import inspect
    
    def get_sourceline(obj):
        s, n = inspect.getsourcelines(obj)
        for i, v in enumerate(s):
            if v.strip().startswith('def'):
                return str(n+i)
        return '*'
    
    def generate_test_cases(suite):
        for test in suite:
            if isinstance(test, unittest.TestCase):
                yield test
            else:
                for test_case in generate_test_cases(test):
                    yield test_case
    
    loader = unittest.TestLoader()
    suite = loader.discover(".", pattern="*test.py")
    
    print("start")  # Don't remove this line
    loader_errors = []
    for s in generate_test_cases(suite):
        tm = getattr(s, s._testMethodName)
        testId = s.id()
        if testId.startswith("unittest.loader._FailedTest"):
            loader_errors.append(s._exception)
        else:
            print(testId.replace(".", ":") + ":" + get_sourceline(tm))
    
    for error in loader_errors:
        try:
            print("=== exception start ===")
            print(error.msg)
            print("=== exception end ===")
        except:
            pass
    "
    cwd: ~/Code/_samples/devfest
    > /usr/bin/python3 -c "
    import unittest
    import inspect
    
    def get_sourceline(obj):
        s, n = inspect.getsourcelines(obj)
        for i, v in enumerate(s):
            if v.strip().startswith('def'):
                return str(n+i)
        return '*'
    
    def generate_test_cases(suite):
        for test in suite:
            if isinstance(test, unittest.TestCase):
                yield test
            else:
                for test_case in generate_test_cases(test):
                    yield test_case
    
    loader = unittest.TestLoader()
    suite = loader.discover(".", pattern="*test.py")
    
    print("start")  # Don't remove this line
    loader_errors = []
    for s in generate_test_cases(suite):
        tm = getattr(s, s._testMethodName)
        testId = s.id()
        if testId.startswith("unittest.loader._FailedTest"):
            loader_errors.append(s._exception)
        else:
            print(testId.replace(".", ":") + ":" + get_sourceline(tm))
    
    for error in loader_errors:
        try:
            print("=== exception start ===")
            print(error.msg)
            print("=== exception end ===")
        except:
            pass
    "
    cwd: ~/Code/_samples/devfest
    > /usr/bin/python3 -c "
    import unittest
    import inspect
    
    def get_sourceline(obj):
        s, n = inspect.getsourcelines(obj)
        for i, v in enumerate(s):
            if v.strip().startswith('def'):
                return str(n+i)
        return '*'
    
    def generate_test_cases(suite):
        for test in suite:
            if isinstance(test, unittest.TestCase):
                yield test
            else:
                for test_case in generate_test_cases(test):
                    yield test_case
    
    loader = unittest.TestLoader()
    suite = loader.discover(".", pattern="*test.py")
    
    print("start")  # Don't remove this line
    loader_errors = []
    for s in generate_test_cases(suite):
        tm = getattr(s, s._testMethodName)
        testId = s.id()
        if testId.startswith("unittest.loader._FailedTest"):
            loader_errors.append(s._exception)
        else:
            print(testId.replace(".", ":") + ":" + get_sourceline(tm))
    
    for error in loader_errors:
        try:
            print("=== exception start ===")
            print(error.msg)
            print("=== exception end ===")
        except:
            pass
    "
    cwd: ~/Code/_samples/devfest
    
  2. karthiknadig commented on Aug 24, 2021

    @karthiknadig
    Member

    Johannes Rieken (@jrieken) You cannot name your file unittest.py and import a module called unittest in it. Module names in python are the file names. and this essentially overrides the unittest module.

  3. locked as resolved and limited conversation to collaborators on Sep 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions