Skip to main content

parse test results to inform requirements

Project description

testreqstatus

PyPI - Version PyPI - Python Version


pip install testreqstatus

Usage

  1. Establish a set of requirements corresponding to test names:

    {
      "DMS356": [
        "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline"
      ],
      "DMS373": [
        "romancal.regtest.test_mos_pipeline.test_hlp_mosaic_pipeline"
      ],
      "DMS374": [
        "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline"
      ],
      "DMS400": [
        "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline"
      ]
    }
    

[!TIP] To extract test requirements from existing tests decorated with @metrics_logger, use RequirementTests.from_test_directory():

from testreqstatus import RequirementTests

requirements = RequirementTests.from_test_directory("~/projects/romancal/")
requirements.to_file("test_requirements.json")
  1. Run tests and generate a JUnitXML results file:

    <?xml version="1.0" encoding="utf-8"?>
    <testsuites>
      <testsuite name="pytest" errors="0" failures="0" skipped="0" tests="2" time="2021.550" timestamp="2024-08-23T00:23:01.454354" hostname="spacetelescope-runner-2ls89-rrbf2">
        <testcase classname="romancal.regtest.test_mos_pipeline" name="test_level3_mos_pipeline" time="677.728">
        </testcase>
        <testcase classname="romancal.regtest.test_mos_pipeline" name="test_hlp_mosaic_pipeline" time="486.642">
        </testcase>
      </testsuite>
    </testsuites>
    
  2. Use RequirementTestResults.requirements_by_test_result to retrieve the status of each test and its corresponding requirements:

    from testreqstatus import RequirementTestResults
    
    results = RequirementTestResults(
        test_requirements="examples/test_requirements.json",
        test_results="examples/results.xml",
    )
    
    print(results.requirements_by_test_result)
    
    {
      "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline": {
        "status": "PASS",
        "requirements": [
          "DMS356",
          "DMS374",
          "DMS400"
        ]
      },
      "romancal.regtest.test_mos_pipeline.test_hlp_mosaic_pipeline": {
        "status": "PASS",
        "requirements": [
          "DMS373"
        ]
      }
    }
    

[!TIP] You can alternatively use RequirementTestResults.test_results_by_requirement to obtain the inverse mapping (requirements and their corresponding test statuses):

print(results.test_results_by_requirement)
{
  "DMS356": {
    "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline": "PASS"
  },
  "DMS373": {
    "romancal.regtest.test_mos_pipeline.test_hlp_mosaic_pipeline": "PASS"
  },
  "DMS374": {
    "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline": "PASS"
  },
  "DMS400": {
    "romancal.regtest.test_mos_pipeline.test_level3_mos_pipeline": "PASS"
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

testreqstatus-0.4.1.tar.gz (286.3 kB view hashes)

Uploaded Source

Built Distribution

testreqstatus-0.4.1-py3-none-any.whl (29.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page