Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions qase-behave/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# qase-behave 2.0.1

## What's new

- Added support for status mapping. More information about status mapping can be found in the [docs](../qase-python-commons/docs/STATUS_MAPPING.md).

# qase-behave 2.0.0

## What's new
Expand Down
1 change: 1 addition & 0 deletions qase-behave/docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ and command line options override both other values.
| Test run configurations | `testops.configurations.values` | `QASE_TESTOPS_CONFIGURATIONS_VALUES` | `qase-testops-configurations-values` | None, don't add any configurations | No | Format: "group1=value1,group2=value2" |
| Create configurations if not exists | `testops.configurations.createIfNotExists` | `QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS` | `qase-testops-configurations-create-if-not-exists` | `False`, don't create configurations | No | `True`, `False` |
| Filter results by status | `testops.statusFilter` | `QASE_TESTOPS_STATUS_FILTER` | `qase-testops-status-filter` | None, don't filter any results | No | Comma-separated list of statuses |
| Map test result statuses | `statusMapping` | `STATUS_MAPPING` | `qase-status-mapping` | None, don't map any statuses | No | Format: 'source1=target1,source2=target2' |
| **Qase Report mode configuration** |
| Local path to store report | `report.connection.path` | `QASE_REPORT_CONNECTION_PATH` | `qase-report-connection-path` | `./build/qase-report` | No | Any string |
| Report format | `report.connection.format` | `QASE_REPORT_CONNECTION_FORMAT` | `qase-report-connection-format` | `json` | No | `json`, `jsonp` |
Expand Down
4 changes: 2 additions & 2 deletions qase-behave/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qase-behave"
version = "2.0.0"
version = "2.0.1"
description = "Qase Behave Plugin for Qase TestOps and Qase Report"
readme = "README.md"
keywords = ["qase", "behave", "plugin", "testops", "report", "qase reporting", "test observability"]
Expand All @@ -28,7 +28,7 @@ classifiers = [
]
requires-python = ">=3.9"
dependencies = [
"qase-python-commons~=4.0.0",
"qase-python-commons~=4.0.1",
"behave>=1.2.6",
"more_itertools",
]
Expand Down
12 changes: 12 additions & 0 deletions qase-behave/src/qase/behave/formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,18 @@ def __parse_config(userdata) -> ConfigManager:
cfg_mgr.config.testops.set_status_filter(
[status.strip() for status in userdata['qase-testops-status-filter'].split(',')])

if 'qase-status-mapping' in userdata:
# Parse status mapping from userdata
# Format: "source1=target1,source2=target2"
mapping_dict = {}
pairs = userdata['qase-status-mapping'].split(',')
for pair in pairs:
pair = pair.strip()
if pair and '=' in pair:
source_status, target_status = pair.split('=', 1)
mapping_dict[source_status.strip()] = target_status.strip()
cfg_mgr.config.set_status_mapping(mapping_dict)

if 'qase-report-driver' in userdata:
cfg_mgr.config.report.set_driver(userdata['qase-report-driver'])

Expand Down
6 changes: 6 additions & 0 deletions qase-pytest/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# qase-pytest 7.0.2

## What's new

- Added support for status mapping. More information about status mapping can be found in the [docs](../qase-python-commons/docs/STATUS_MAPPING.md).

# qase-pytest 7.0.1

## What's new
Expand Down
1 change: 1 addition & 0 deletions qase-pytest/docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ and command line options override both other values.
| Test run configurations | `testops.configurations.values` | `QASE_TESTOPS_CONFIGURATIONS_VALUES` | `--qase-testops-configurations-values` | None, don't add any configurations | No | Format: "group1=value1,group2=value2" |
| Create configurations if not exists | `testops.configurations.createIfNotExists` | `QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS` | `--qase-testops-configurations-create-if-not-exists` | `False`, don't create configurations | No | `True`, `False` |
| Filter results by status | `testops.statusFilter` | `QASE_TESTOPS_STATUS_FILTER` | `--qase-testops-status-filter` | None, don't filter any results | No | Comma-separated list of statuses |
| Map test result statuses | `statusMapping` | `STATUS_MAPPING` | `--qase-status-mapping` | None, don't map any statuses | No | Format: 'source1=target1,source2=target2' |
| **Qase Report mode configuration** |
| Local path to store report | `report.connection.path` | `QASE_REPORT_CONNECTION_PATH` | `--qase-report-connection-path` | `./build/qase-report` | No | Any string |
| Report format | `report.connection.format` | `QASE_REPORT_CONNECTION_FORMAT` | `--qase-report-connection-format` | `json` | No | `json`, `jsonp` |
Expand Down
4 changes: 2 additions & 2 deletions qase-pytest/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qase-pytest"
version = "7.0.1"
version = "7.0.2"
description = "Qase Pytest Plugin for Qase TestOps and Qase Report"
readme = "README.md"
keywords = ["qase", "pytest", "plugin", "testops", "report", "qase reporting", "test observability"]
Expand All @@ -28,7 +28,7 @@ classifiers = [
]
requires-python = ">=3.9"
dependencies = [
"qase-python-commons~=4.0.0",
"qase-python-commons~=4.0.1",
"pytest>=7.4.4",
"filelock~=3.12.2",
"more_itertools",
Expand Down
12 changes: 12 additions & 0 deletions qase-pytest/src/qase/pytest/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,18 @@ def setup_config_manager(config):
config_manager.config.testops.set_status_filter(
[status.strip() for status in config.option.__dict__[option].split(',')])

if option == "qase_status_mapping" and config.option.__dict__[option] is not None:
# Parse status mapping from CLI parameter
# Format: "source1=target1,source2=target2"
mapping_dict = {}
pairs = config.option.__dict__[option].split(',')
for pair in pairs:
pair = pair.strip()
if pair and '=' in pair:
source_status, target_status = pair.split('=', 1)
mapping_dict[source_status.strip()] = target_status.strip()
config_manager.config.set_status_mapping(mapping_dict)

if option == "qase_testops_run_external_link_type" and config.option.__dict__[option] is not None:
if not config_manager.config.testops.run.external_link:
from qase.commons.models.external_link import ExternalLinkConfig
Expand Down
8 changes: 8 additions & 0 deletions qase-pytest/src/qase/pytest/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@ def addoptions(parser, group):
help="Filter results by status. Format: 'passed,failed,skipped'"
)

QasePytestOptions.add_option(
parser,
group,
"--qase-status-mapping",
dest="qase_status_mapping",
help="Map test result statuses. Format: 'invalid=failed,skipped=passed'"
)

QasePytestOptions.add_option(
parser,
group,
Expand Down
6 changes: 6 additions & 0 deletions qase-robotframework/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# qase-robotframework 4.0.1

## What's new

- Added support for status mapping. More information about status mapping can be found in the [docs](../qase-python-commons/docs/STATUS_MAPPING.md).

# qase-robotframework 4.0.0

## What's new
Expand Down
4 changes: 2 additions & 2 deletions qase-robotframework/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qase-robotframework"
version = "4.0.0"
version = "4.0.1"
description = "Qase Robot Framework Plugin"
readme = "README.md"
authors = [{name = "Qase Team", email = "support@qase.io"}]
Expand All @@ -24,7 +24,7 @@ classifiers = [
urls = {"Homepage" = "https://github.com/qase-tms/qase-python/tree/main/qase-robotframework"}
requires-python = ">=3.9"
dependencies = [
"qase-python-commons~=4.0.0",
"qase-python-commons~=4.0.1",
"filelock~=3.12.2",
]

Expand Down
7 changes: 7 additions & 0 deletions qase-tavern/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# qase-tavern 2.0.1

## What's new

- Added support for status mapping. More information about status mapping can be found in the [docs](../qase-python-commons/docs/STATUS_MAPPING.md).

# qase-tavern 2.0.0

## What's new
Expand Down Expand Up @@ -25,6 +31,7 @@
## Migration Guide

The plugin now provides more accurate test result reporting by distinguishing between:

- `failed`: Test failed due to assertion error (test logic issue)
- `invalid`: Test failed due to non-assertion error (infrastructure/setup issue)

Expand Down
1 change: 1 addition & 0 deletions qase-tavern/docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ and command line options override both other values.
| Test run configurations | `testops.configurations.values` | `QASE_TESTOPS_CONFIGURATIONS_VALUES` | `--qase-testops-configurations-values` | None, don't add any configurations | No | Format: "group1=value1,group2=value2" |
| Create configurations if not exists | `testops.configurations.createIfNotExists` | `QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS` | `--qase-testops-configurations-create-if-not-exists` | `False`, don't create configurations | No | `True`, `False` |
| Filter results by status | `testops.statusFilter` | `QASE_TESTOPS_STATUS_FILTER` | `--qase-testops-status-filter` | None, don't filter any results | No | Comma-separated list of statuses |
| Map test result statuses | `statusMapping` | `STATUS_MAPPING` | `--qase-status-mapping` | None, don't map any statuses | No | Format: 'source1=target1,source2=target2' |
| **Qase Report mode configuration** |
| Local path to store report | `report.connection.path` | `QASE_REPORT_CONNECTION_PATH` | `--qase-report-connection-path` | `./build/qase-report` | No | Any string |
| Report format | `report.connection.format` | `QASE_REPORT_CONNECTION_FORMAT` | `--qase-report-connection-format` | `json` | No | `json`, `jsonp` |
Expand Down
4 changes: 2 additions & 2 deletions qase-tavern/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qase-tavern"
version = "2.0.0"
version = "2.0.1"
description = "Qase Tavern Plugin for Qase TestOps and Qase Report"
readme = "README.md"
keywords = ["qase", "tavern", "plugin", "testops", "report", "qase reporting", "test observability"]
Expand All @@ -28,7 +28,7 @@ classifiers = [
]
requires-python = ">=3.9"
dependencies = [
"qase-python-commons~=4.0.0",
"qase-python-commons~=4.0.1",
"pytest>=7,<7.3",
"filelock~=3.12.2",
"more_itertools",
Expand Down
12 changes: 12 additions & 0 deletions qase-tavern/src/qase/tavern/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ def setup_config_manager(config):
config_manager.config.testops.set_status_filter(
[status.strip() for status in config.option.__dict__[option].split(',')])

if option == "qase_status_mapping" and config.option.__dict__[option] is not None:
# Parse status mapping from CLI parameter
# Format: "source1=target1,source2=target2"
mapping_dict = {}
pairs = config.option.__dict__[option].split(',')
for pair in pairs:
pair = pair.strip()
if pair and '=' in pair:
source_status, target_status = pair.split('=', 1)
mapping_dict[source_status.strip()] = target_status.strip()
config_manager.config.set_status_mapping(mapping_dict)

if option == "qase_testops_run_external_link_type" and config.option.__dict__[option] is not None:
if not config_manager.config.testops.run.external_link:
from qase.commons.models.external_link import ExternalLinkConfig
Expand Down
8 changes: 8 additions & 0 deletions qase-tavern/src/qase/tavern/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@ def addoptions(parser, group):
help="Filter results by status. Format: 'passed,failed,skipped'"
)

QasePytestOptions.add_option(
parser,
group,
"--qase-status-mapping",
dest="qase_status_mapping",
help="Map test result statuses. Format: 'invalid=failed,skipped=passed'"
)

QasePytestOptions.add_option(
parser,
group,
Expand Down