Skip to main content

Qase TestOps Behave Reporter

PyPI version PyPI downloads License

Qase Behave Reporter enables seamless integration between your Behave BDD tests and Qase TestOps, providing automatic test result reporting, test case management, and comprehensive test analytics.

Features

  • Link automated tests to Qase test cases by ID
  • Auto-create test cases from your feature files
  • Report test results with rich metadata (fields, attachments)
  • Automatic step reporting from Gherkin scenarios
  • Multi-project reporting support
  • Flexible configuration (file, environment variables)
  • BehaveX parallel execution support

Installation

pip install qase-behave

Quick Start

1. Create qase.config.json in your project root:

{
  "mode": "testops",
  "testops": {
    "project": "YOUR_PROJECT_CODE",
    "api": {
      "token": "YOUR_API_TOKEN"
    }
  }
}

2. Add Qase ID to your scenario:

Feature: Authentication

  @qase.id:1
  Scenario: User can log in with valid credentials
    Given I am on the login page
    When I enter valid credentials
    Then I should see the dashboard

3. Run your tests:

behave --format=qase.behave.formatter:QaseFormatter

Configuration

The reporter is configured via (in order of priority):

  1. Environment variables (QASE_*, highest priority)
  2. Config file (qase.config.json)

Minimal Configuration

Option Environment Variable Description
mode QASE_MODE Set to testops to enable reporting
testops.project QASE_TESTOPS_PROJECT Your Qase project code
testops.api.token QASE_TESTOPS_API_TOKEN Your Qase API token

Example qase.config.json

{
  "mode": "testops",
  "fallback": "report",
  "testops": {
    "project": "YOUR_PROJECT_CODE",
    "api": {
      "token": "YOUR_API_TOKEN"
    },
    "run": {
      "title": "Behave Automated Run"
    },
    "batch": {
      "size": 100
    }
  },
  "report": {
    "driver": "local",
    "connection": {
      "local": {
        "path": "./build/qase-report",
        "format": "json"
      }
    }
  }
}

Full configuration reference: See qase-python-commons for all available options including logging, status mapping, execution plans, and more.

Usage

Link Tests with Test Cases

Associate your scenarios with Qase test cases using the @qase.id tag:

Feature: Shopping Cart

  @qase.id:1
  Scenario: Add item to cart
    Given I am on the product page
    When I click add to cart
    Then the item should be in my cart

  @qase.id:2
  Scenario: Remove item from cart
    Given I have an item in my cart
    When I click remove
    Then my cart should be empty

Add Metadata

Enhance your scenarios with additional information using the @qase.fields tag:

Feature: Checkout

  @qase.id:1
  @qase.fields:{"severity":"critical","priority":"high","layer":"e2e"}
  @qase.suite:Checkout
  Scenario: Complete purchase
    Given I have items in my cart
    When I complete checkout
    Then I should see order confirmation

Note: In field values, use underscores (_) instead of spaces. They will be automatically converted.

Ignore Tests

Exclude specific scenarios from Qase reporting:

Feature: Authentication

  @qase.ignore
  Scenario: Work in progress test
    Given this test is not ready
    Then it should not be reported

Test Result Statuses

Behave Result Qase Status
Passed passed
Failed (AssertionError) failed
Failed (other exception) invalid
Skipped skipped

Attachments

Attach files and content to test results in step definitions:

from behave import given, when, then
from qase.behave import qase

@when('I take a screenshot')
def step_impl(context):
    screenshot = context.browser.get_screenshot_as_png()
    qase.attach(content=screenshot, file_name="screenshot.png", mime_type="image/png")

For detailed usage examples, see the Usage Guide.

Running Tests

Basic Execution

behave --format=qase.behave.formatter:QaseFormatter

With Environment Variables

export QASE_MODE=testops
export QASE_TESTOPS_PROJECT=PROJ
export QASE_TESTOPS_API_TOKEN=your_token
behave --format=qase.behave.formatter:QaseFormatter

With Custom Run Title

export QASE_TESTOPS_RUN_TITLE="Regression Run"
behave --format=qase.behave.formatter:QaseFormatter

Parallel Execution with BehaveX

Run tests in parallel using BehaveX (v4.0.0+):

pip install behavex

behavex --formatter=qase.behave.formatter:QaseFormatter --parallel-processes=4 features/

# Parallel by feature
behavex --formatter=qase.behave.formatter:QaseFormatter --parallel-processes=4 --parallel-scheme=feature features/

Configuration is done via environment variables or qase.config.json (the same as for standard behave).

Note: qase.attach() and qase.comment() are not supported in BehaveX mode. All other features (test case linking, metadata, steps, statuses) work normally.

Requirements

  • Python >= 3.9
  • behave >= 1.2.6
  • filelock >= 3.12.2
  • BehaveX >= 4.0.0 (optional, for parallel execution)

Documentation

Guide Description
Usage Guide Complete usage reference with all tags and options
Attachments Adding screenshots, logs, and files to test results
Multi-Project Support Reporting to multiple Qase projects

Examples

See the examples directory for complete working examples.

License

Apache License 2.0. See LICENSE for details.

Metadata

Release files for qase-behave 4.0.0

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-behave 4.0.0
File Size Uploaded
qase_behave-4.0.0.tar.gz 28.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qase-behave 4.0.0
File Interpreter ABI Platform
qase_behave-4.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.3 kB

Release files / qase_behave-4.0.0.tar.gz

Download URL qase_behave-4.0.0.tar.gz
Size 28.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e277e524742c687c3302c13626aa1966f71815f930691f5be7bc859d2ecfdbac
BLAKE2b-256 checksum
How to use checksums
785197178eea24e4fee58c12f5bdedd8e54abaab062d5ea4f5619fcbe4929c39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / qase_behave-4.0.0-py3-none-any.whl

Download URL qase_behave-4.0.0-py3-none-any.whl
Size 17.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
81af839107bec1fcf8316c49d058db5720fdf258c05d7f84fd5d0348d8c89857
BLAKE2b-256 checksum
How to use checksums
c068478d57c651be24f008f2a759c60382d7903d78c35e8375a954cdfa9dafb5
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

This release

4.0.0 This release

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

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.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

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