pytest-collect-formatter2

Formatter for pytest collect output


Keywords
pytest, py, test, yaml, json
License
MIT
Install
pip install pytest-collect-formatter2==0.1.3

Documentation

pytest-collect-formatter2

Fork From: https://github.com/LaserPhaser/pytest-collect-formatter

add remark collect

Pytest plugin for formatting output of the collected tests.

  • Free software: MIT license

Requirements

  • pyyaml
  • dicttoxml

Installation

You can install "pytest-collect-formatter2" via pip:

$ pip install pytest-collect-formatter2

Usage

  • Use this plugin by running pytest normally and use the following options to customize collection format, it's better to use with --collect-only option
>>> collect-formatter:
  --collect-output-file=COLLECT_OUTPUT_FILE
                        Saves collected test items to the file
  --collect-format=COLLECT_FORMAT
                        Saves collected test items specified format [xml, yaml, json]
  --collect-type=COLLECT_TYPE
                        Format output results in classic pytest view or in 'path' view [classic, path], default classic
  --with-remark
                Collect method remark,priority: 1st-@allure.title() 2nd-method python doc 3rd- method comment

Example of usage

$ pytest tests --collect-output-file my_tests_structure.xml --collect-format xml

And you will get the my_tests_structure.xml

Exmpales of formats

PATH

JSON

[
    {
        "type": "Module",
        "title": "examples/tests/test_formatter/test_fromatter_v1.py",
        "children": [
            {
                "type": "Class",
                "title": "TestFormatter",
                "children": [
                    {
                        "type": "Function",
                        "title": "test_inside_class",
                        "remark": "this is remark"
                    },
                    {
                        "type": "Function",
                        "title": "test_inside_class_parametrize[1]",
                        "remark": null
                    },
                    {
                        "type": "Function",
                        "title": "test_inside_class_parametrize[2]",
                        "remark": null
                    },
                    {
                        "type": "Function",
                        "title": "test_inside_class_parametrize[3]",
                        "remark": null
                    },
                    {
                        "type": "Function",
                        "title": "test_inside_class_parametrize[4]",
                        "remark": null
                    }
                ],
                "remark": null
            },
            {
                "type": "Function",
                "title": "test_outside_of_class",
                "remark": "this is remark 3"
            }
        ],
        "remark": null
    }
]

YAML

 - children:
   - children:
     - children:
       - children:
         - children:
           - children: []
             title: test_inside_class
             type: pytest_unit
           - children: []
             title: test_inside_class_parametrize[1]
             type: pytest_unit
           - children: []
             title: test_inside_class_parametrize[2]
             type: pytest_unit
           - children: []
             title: test_inside_class_parametrize[3]
...

XML

<?xml version="1.0" ?>
<root>
    <item>
        <type>path</type>
        <title>examples</title>
        <children>
            <item>
                <type>path</type>
                <title>tests</title>
                <children>
                    <item>
                        <type>path</type>
                        <title>test_formatter</title>
                        <children>
                            <item>
                                <type>path</type>
                                <title>test_fromatter_v1.py</title>
                                <children>
                                    <item>
                                        <type>pytest_unit</type>
                                        <title>TestFormatter</title>
                                        <children>
                                            <item>
                                                <type>pytest_unit</type>
                                                <title>test_inside_class</title>
                                                <children/>
                                            </item>
...

CLASSIC

JSON

[
 {
     "type": "Package",
     "value": "test_formatter",
     "children": [
         {
             "type": "Module",
             "value": "test_fromatter_v1.py",
             "children": [
                 {
                     "type": "Class",
                     "value": "TestFormatter",
                     "children": [
                         {
                             "type": "Function",
                             "value": "test_inside_class"
                         }
 ....

YAML

- children:
  - children:
    - children:
      - type: Function
        value: test_inside_class
      - type: Function
        value: test_inside_class_parametrize[1]
      - type: Function
        value: test_inside_class_parametrize[2]
      - type: Function
        value: test_inside_class_parametrize[3]
      - type: Function
        value: test_inside_class_parametrize[4]
      type: Class
      value: TestFormatter
    - type: Function
      value: test_outside_of_class
    type: Module
    value: test_fromatter_v1.py
  type: Package
  value: test_formatter
....

XML

<?xml version="1.0" ?>
<root>
    <item>
        <type>Package</type>
        <value>test_formatter</value>
        <children>
            <item>
                <type>Module</type>
                <value>test_fromatter_v1.py</value>
                <children>
                    <item>
                        <type>Class</type>
                        <value>TestFormatter</value>
                        <children>
                            <item>
                                <type>Function</type>
                                <value>test_inside_class</value>
                            </item>
                            <item>
                                <type>Function</type>
                                <value>test_inside_class_parametrize[1]</value>
                            </item>
                            <item>
                                <type>Function</type>
                                <value>test_inside_class_parametrize[2]</value>
                            </item>
                            <item>
                                <type>Function</type>
                                <value>test_inside_class_parametrize[3]</value>
                            </item>
                            <item>
                                <type>Function</type>
                                <value>test_inside_class_parametrize[4]</value>
                            </item>
                        </children>
                    </item>
                    <item>
                        <type>Function</type>
                        <value>test_outside_of_class</value>
                    </item>
                </children>
            </item>
        </children>
....

More examples could be found in examples folder as well as tests structure

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits