Skip to main content

Qase Python Commons

PyPI version PyPI downloads License

Core library for all Qase Python reporters. Contains the complete configuration reference.

Table of Contents


About

This module is an SDK for developing test reporters for Qase TMS. It uses qase-api-client as an API client, and all Qase Python reporters depend on this package.

Use this library if:

  • You're developing a custom reporter for a specialized framework
  • You need a complete configuration reference

For testing, use the ready-made reporters — see Reporters section.

Installation

pip install qase-python-commons

Reporters

For popular frameworks, use the ready-made reporters:

Framework Package Documentation
Pytest qase-pytest README
Behave qase-behave README
Robot Framework qase-robotframework README
Tavern qase-tavern README

Configuration

Configuration Priority

Qase Python reporters support three configuration methods (in order of priority):

  1. CLI options (pytest and tavern only) — highest priority
  2. Environment variables (QASE_*)
  3. Config file (qase.config.json) — lowest priority

Reporter Modes

The reporter mode is set via the mode option:

Mode Description
testops Send results to a single Qase project
testops_multi Send results to multiple projects
report Generate a local JSON report
off Reporter disabled (default)

Common Options

Description Config file Environment variable Default Required
Reporter mode mode QASE_MODE off No
Fallback mode fallback QASE_FALLBACK off No
Environment environment QASE_ENVIRONMENT — No
Root suite rootSuite QASE_ROOT_SUITE — No
Debug mode debug QASE_DEBUG False No
Execution plan path executionPlan.path QASE_EXECUTION_PLAN_PATH ./build/qase-execution-plan.json No
Exclude parameters excludeParams QASE_EXCLUDE_PARAMS — No
Status mapping statusMapping QASE_STATUS_MAPPING — No

TestOps Options (Single Project)

Description Config file Environment variable Default Required
API token testops.api.token QASE_TESTOPS_API_TOKEN — Yes*
API host testops.api.host QASE_TESTOPS_API_HOST qase.io No
Project code testops.project QASE_TESTOPS_PROJECT — Yes*
Test run ID testops.run.id QASE_TESTOPS_RUN_ID — No
Test run title testops.run.title QASE_TESTOPS_RUN_TITLE Automated run <date> No
Test run description testops.run.description QASE_TESTOPS_RUN_DESCRIPTION <Framework> automated run No
Complete test run testops.run.complete QASE_TESTOPS_RUN_COMPLETE True No
Test run tags testops.run.tags QASE_TESTOPS_RUN_TAGS [] No
External link testops.run.externalLink QASE_TESTOPS_RUN_EXTERNAL_LINK — No
Test plan ID testops.plan.id QASE_TESTOPS_PLAN_ID — No
Batch size testops.batch.size QASE_TESTOPS_BATCH_SIZE 200 No
Create defects testops.defect QASE_TESTOPS_DEFECT False No
Status filter testops.statusFilter QASE_TESTOPS_STATUS_FILTER — No
Configuration values testops.configurations.values QASE_TESTOPS_CONFIGURATIONS_VALUES — No
Create configurations testops.configurations.createIfNotExists QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS false No
Show public report link testops.showPublicReportLink QASE_TESTOPS_SHOW_PUBLIC_REPORT_LINK False No

* Required when using testops mode

TestOps Multi Options (Multiple Projects)

Description Config file Environment variable Default Required
Default project testops_multi.default_project QASE_TESTOPS_MULTI_DEFAULT_PROJECT — No
Projects array testops_multi.projects — [] Yes**
Project code testops_multi.projects[].code — — Yes**
Test run title testops_multi.projects[].run.title — Automated Run <code> <date> No
Test run description testops_multi.projects[].run.description — Automated Run <code> <date> No
Complete test run testops_multi.projects[].run.complete — True No
Test run ID testops_multi.projects[].run.id — — No
Test run tags testops_multi.projects[].run.tags — [] No
External link testops_multi.projects[].run.externalLink — — No
Test plan ID testops_multi.projects[].plan.id — — No
Environment testops_multi.projects[].environment — Global No

** Required when using testops_multi mode

Multi-project annotations:

Framework Syntax
Pytest @qase.project_id("CODE", 1, 2, 3)
Behave @qase.project_id.CODE:1,2,3
Robot Framework Q-PROJECT.CODE-1,2,3
Tavern QaseProjectID.CODE=1,2,3 in test name

See details: Pytest | Behave | Robot Framework | Tavern

Local Report Options

Description Config file Environment variable Default
Driver report.driver QASE_REPORT_DRIVER local
Report path report.connection.path QASE_REPORT_CONNECTION_PATH ./build/qase-report
Report format report.connection.format QASE_REPORT_CONNECTION_FORMAT json

Logging Options

Description Config file Environment variable Default
Console output logging.console QASE_LOGGING_CONSOLE True
File output logging.file QASE_LOGGING_FILE Same as debug

Framework-Specific Options

Pytest

Description Config file Environment variable CLI Default
Capture logs framework.pytest.captureLogs QASE_PYTEST_CAPTURE_LOGS --qase-pytest-capture-logs False
XFail status (failed) framework.pytest.xfailStatus.xfail QASE_PYTEST_XFAIL_STATUS_XFAIL --qase-pytest-xfail-status-xfail Skipped
XFail status (passed) framework.pytest.xfailStatus.xpass QASE_PYTEST_XFAIL_STATUS_XPASS --qase-pytest-xfail-status-xpass Passed

Behave, Robot Framework, Tavern

These frameworks use only the common configuration options.


Configuration Examples

Single Project (testops)

{
  "mode": "testops",
  "fallback": "report",
  "debug": false,
  "environment": "local",
  "testops": {
    "api": {
      "token": "<token>",
      "host": "qase.io"
    },
    "project": "DEMO",
    "run": {
      "title": "Regress run",
      "description": "Automated regression tests",
      "complete": true,
      "tags": ["regression", "automated"]
    },
    "batch": {
      "size": 100
    }
  }
}

Multiple Projects (testops_multi)

{
  "mode": "testops_multi",
  "fallback": "report",
  "testops": {
    "api": {
      "token": "<token>",
      "host": "qase.io"
    },
    "batch": {
      "size": 100
    }
  },
  "testops_multi": {
    "default_project": "DEMO1",
    "projects": [
      {
        "code": "DEMO1",
        "run": {
          "title": "DEMO1 Test Run",
          "tags": ["staging"]
        },
        "environment": "staging"
      },
      {
        "code": "DEMO2",
        "run": {
          "title": "DEMO2 Test Run",
          "tags": ["production"]
        },
        "environment": "production"
      }
    ]
  }
}

Environment Variables

# Common settings
export QASE_MODE="testops"
export QASE_FALLBACK="report"
export QASE_ENVIRONMENT="local"
export QASE_DEBUG="false"

# TestOps
export QASE_TESTOPS_API_TOKEN="<token>"
export QASE_TESTOPS_PROJECT="DEMO"
export QASE_TESTOPS_RUN_TITLE="Automated Run"
export QASE_TESTOPS_RUN_COMPLETE="true"

# Pytest
export QASE_PYTEST_CAPTURE_LOGS="true"

Profilers

Profilers automatically track operations during test execution and send them as steps to Qase TestOps.

Profiler Description Documentation
network Tracks HTTP requests (requests, urllib3) Network Profiler
db Tracks database operations Database Profiler
sleep Tracks sleep calls —

Enable profilers in qase.config.json:

{
  "profilers": ["network", "db"]
}

Or via environment variable:

export QASE_PROFILERS="network,db"

The profilers array supports both string and object formats. Use the object format to configure profiler-specific options:

{
  "profilers": [
    {
      "name": "network",
      "excludeHosts": ["telemetry.local", "monitoring.internal"]
    },
    "db"
  ]
}

Additional Features

Status Mapping

Allows changing test result status before sending to Qase:

{
  "statusMapping": {
    "invalid": "failed",
    "skipped": "passed"
  }
}

Available statuses: passed, failed, skipped, invalid

Status Filtering

Excludes results with specified statuses from being sent:

{
  "testops": {
    "statusFilter": ["passed", "skipped"]
  }
}

External Links

Associates the test run with external resources (e.g., Jira):

{
  "testops": {
    "run": {
      "externalLink": {
        "type": "jiraCloud",
        "link": "PROJ-123"
      }
    }
  }
}

Types: jiraCloud, jiraServer

Test Run Configurations

Creates or finds configurations in Qase TestOps:

{
  "testops": {
    "configurations": {
      "values": [
        { "name": "browser", "value": "chrome" },
        { "name": "os", "value": "linux" }
      ],
      "createIfNotExists": true
    }
  }
}

Requirements

  • Python 3.9+
  • qase-api-client

License

Apache 2.0 — see LICENSE

Metadata

Release files for qase-python-commons 5.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qase-python-commons 5.1.3
File Size Uploaded
qase_python_commons-5.1.3.tar.gz 49.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qase-python-commons 5.1.3
File Interpreter ABI Platform
qase_python_commons-5.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 107.9 kB

Release files / qase_python_commons-5.1.3.tar.gz

Download URL qase_python_commons-5.1.3.tar.gz
Size 49.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0ec0333933abd7c9eae7affdaa0889d7e8c3d0e4a439013e33ad7dd9845877f5
BLAKE2b-256 checksum
How to use checksums
f85028233af918b40b6a6e5246bb275d449b67b90bd77fba15f25b26af632030
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / qase_python_commons-5.1.3-py3-none-any.whl

Download URL qase_python_commons-5.1.3-py3-none-any.whl
Size 58.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93b8eeba0d3f0de6c0a4246de6e07b90ffa70ac0dc3ba450390ed90a0f672d7a
BLAKE2b-256 checksum
How to use checksums
a5cded05290ef7ee505d5bf176b33f55f8afe406e16c08afcc2e06823c27d316
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

5.1.5

2 release files

5.1.4

2 release files

This release

5.1.3 This release

2 release files

5.1.2

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.7

2 release files

5.0.6

2 release files

5.0.5

2 release files

5.0.4

2 release files

5.0.3

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.1.10

2 release files

4.1.9

2 release files

4.1.8

2 release files

4.1.7

2 release files

4.1.6

2 release files

4.1.5

2 release files

4.1.4

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.5.7

2 release files

3.5.6

2 release files

3.5.5

2 release files

3.5.4

2 release files

3.5.3

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.7

2 release files

3.2.6

2 release files

3.2.5

2 release files

3.2.4

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.9

2 release files

3.1.8

2 release files

3.1.7

2 release files

3.1.6

2 release files

3.1.5

2 release files

3.1.4

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.0

2 release files

2.0.12

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page