Skip to content

Pytest discovery in python code #4033

@DonJayamanne

Description

@DonJayamanne

(related to #3911)

Proposed Minimal Output Format

[
    testRoot: string;
    folders: [
        {
            name: string; // folderName relative to `testRoot`.
            package?: [
                {
                    fileName: // test file name
                    testSuite?: [
                        {
                            name: string; // name of test suite
                            lineNumber: number; // line number suite definition exists on (1-based)
                            parentTestSuite?: string[] // if this is a suite within another suite, the immedate parent
                            functions: [
                                {
                                    name: string; // name of test function
                                    lineNumber: number; // line number function exists on (1-based)
                                }
                            ];
                        }
                    ]
                    functions?: [
                        {
                            // see definition of `testSuite:functions` above
                        }
                    ]
                    errors: string[]; // any errors found when discovering this specific package
                }
            ]
        }
    ] 
]

current pytest output:

# python -m pytest --collect-only -q

test_foo.py::test_a
test_foo.py::test_b
sub_a/sub_b/test_sub_b.py::TestFooSub2::test_value_below_one_hundred
sub_a/sub_b/test_sub_b.py::TestFooSub2::test_value_above_zero
sub_a/sub_b/sub_c/test_sub_c.py::test_something_odd
sub_a/sub_b/sub_c/test_sub_c.py::TestSomethingSomething::test_something_even
testsub/test_foo_sub1.py::TestFooSub1::test_foo_sub1_method1
testsub/test_foo_sub1.py::TestFooSub1::test_foo_sub1_method2
testsub/test_foo_sub1.py::TestFooSub1::TstFooSub1_A::test_foo_sub1_method2

serialized:

{
   testRoot: "/home/user/dev/workspace",
   folders: [
       {
           name: ".",
           testFiles: [
               {
                   fileName: "test_foo.py",
                   functions: [
                       {
                           name: "test_a",
                           id: "test_foo.py::test_a"
                       },
                       {
                           name: "test_b",
                           id: "test_foo.py::test_b"
                       }
                   ]
               }
           ]
       },
       {
           name: "testsub",
           testFiles: [
               {
                   fileName: "test_foo_sub1.py",
   
               }
           ]
       }
   ]
}

Metadata

Metadata

Labels

area-testingdebtCovers everything internal: CI, testing, refactoring of the codebase, etc.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions