Qase TestOps Behave Reporter
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.
- 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
pip install qase-behave1. 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 dashboard3. Run your tests:
behave --format=qase.behave.formatter:QaseFormatterThe reporter is configured via (in order of priority):
- Environment variables (
QASE_*, highest priority) - Config file (
qase.config.json)
| 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 |
{
"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.
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 emptyEnhance 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 confirmationNote: In field values, use underscores (_) instead of spaces. They will be automatically converted.
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| Behave Result | Qase Status |
|---|---|
| Passed | passed |
| Failed (AssertionError) | failed |
| Failed (other exception) | invalid |
| Skipped | skipped |
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.
behave --format=qase.behave.formatter:QaseFormatterexport QASE_MODE=testops
export QASE_TESTOPS_PROJECT=PROJ
export QASE_TESTOPS_API_TOKEN=your_token
behave --format=qase.behave.formatter:QaseFormatterexport QASE_TESTOPS_RUN_TITLE="Regression Run"
behave --format=qase.behave.formatter:QaseFormatterRun 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()andqase.comment()are not supported in BehaveX mode. All other features (test case linking, metadata, steps, statuses) work normally.
- Python >= 3.9
- behave >= 1.2.6
- filelock >= 3.12.2
- BehaveX >= 4.0.0 (optional, for parallel execution)
| 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 |
See the examples directory for complete working examples.
Apache License 2.0. See LICENSE for details.