Name | behavex JSON |
Version |
4.3.1
JSON |
| download |
home_page | https://github.com/hrcorval/behavex |
Summary | Agile testing framework on top of Behave (BDD). |
upload_time | 2025-07-16 12:48:11 |
maintainer | None |
docs_url | None |
author | Hernan Rey |
requires_python | >=3.5 |
license | MIT |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
[](https://pepy.tech/project/behavex)
[](https://badge.fury.io/py/behavex)
[](https://pypi.org/project/behavex/)
[](https://libraries.io/github/hrcorval/behavex)
[](https://github.com/hrcorval/behavex/blob/main/LICENSE)
[](https://github.com/hrcorval/behavex/actions)
[](https://github.com/hrcorval/behavex/commits/main)
# BehaveX Documentation
## 📢 Important News
**🎉 NEW: Allure Reports Integration!** *(Available since BehaveX 4.2.1)*
BehaveX now provides seamless integration with Allure, the popular test reporting framework! Generate beautiful, comprehensive test reports with detailed evidence.
[Learn more about Allure integration](#allure-reports-integration) 👈
## Table of Contents
- [Introduction](#introduction)
- [Features](#features)
- [Installation Instructions](#installation-instructions)
- [Execution Instructions](#execution-instructions)
- [Constraints](#constraints)
- [Supported Behave Arguments](#supported-behave-arguments)
- [Specific Arguments from BehaveX](#specific-arguments-from-behavex)
- [Parallel Test Executions](#parallel-test-executions)
- [Test Execution Reports](#test-execution-reports)
- [Attaching Images to the HTML Report](#attaching-images-to-the-html-report)
- [Attaching Additional Execution Evidence to the HTML Report](#attaching-additional-execution-evidence-to-the-html-report)
- [Test Logs per Scenario](#test-logs-per-scenario)
- [Metrics and Insights](#metrics-and-insights)
- [Dry Runs](#dry-runs)
- [Muting Test Scenarios](#muting-test-scenarios)
- [Handling Failing Scenarios](#handling-failing-scenarios)
- [Displaying Progress Bar in Console](#displaying-progress-bar-in-console)
- [Allure Reports Integration](#allure-reports-integration)
- [Show Your Support](#show-your-support)
## Introduction
**BehaveX** is a BDD testing solution built on top of the Python Behave library, orchestrating parallel test sessions to enhance your testing workflow with additional features and performance improvements. It's particularly beneficial in the following scenarios:
- **Accelerating test execution**: Significantly reduce test run times through parallel execution by feature or scenario.
- **Enhancing test reporting**: Generate comprehensive and visually appealing HTML and JSON reports for in-depth analysis and integration with other tools.
- **Improving test visibility**: Provide detailed evidence, such as screenshots and logs, essential for understanding test failures and successes.
- **Optimizing test automation**: Utilize features like test retries, test muting, and performance metrics for efficient test maintenance and analysis.
- **Managing complex test suites**: Handle large test suites with advanced features for organization, execution, and comprehensive reporting through multiple formats and custom formatters.
## Features
BehaveX provides the following features:
- **Parallel Test Executions**: Execute tests using multiple processes, either by feature or by scenario.
- **Enhanced Reporting**: Generate comprehensive reports in multiple formats (HTML, JSON, JUnit) and utilize custom formatters like Allure for advanced reporting capabilities that can be exported and integrated with third-party tools.
- **Evidence Collection**: Include images/screenshots and additional evidence in the HTML report.
- **Test Logs**: Automatically compile logs generated during test execution into individual log reports for each scenario.
- **Test Muting**: Add the `@MUTE` tag to test scenarios to execute them without including them in JUnit reports.
- **Execution Metrics**: Generate metrics in the HTML report for the executed test suite, including Automation Rate, Pass Rate, Steps execution counter and average execution time.
- **Dry Runs**: Perform dry runs to see the full list of scenarios in the HTML report without executing the tests. It overrides the `-d` Behave argument.
- **Auto-Retry for Failing Scenarios**: Use the `@AUTORETRY` tag to automatically re-execute failing scenarios. Also, you can re-run all failing scenarios using the **failing_scenarios.txt** file.



## Installation Instructions
To install BehaveX, execute the following command:
```bash
pip install behavex
```
## Execution Instructions
Execute BehaveX in the same way as Behave from the command line, using the `behavex` command. Here are some examples:
- **Run scenarios tagged as `TAG_1` but not `TAG_2`:**
```bash
behavex -t=@TAG_1 -t=~@TAG_2
```
- **Run scenarios tagged as `TAG_1` or `TAG_2`:**
```bash
behavex -t=@TAG_1,@TAG_2
```
- **Run scenarios tagged as `TAG_1` using 4 parallel processes:**
```bash
behavex -t=@TAG_1 --parallel-processes=4 --parallel-scheme=scenario
```
- **Run scenarios located at specific folders using 2 parallel processes:**
```bash
behavex features/features_folder_1 features/features_folder_2 --parallel-processes=2
```
- **Run scenarios from a specific feature file using 2 parallel processes:**
```bash
behavex features_folder_1/sample_feature.feature --parallel-processes=2
```
- **Run scenarios tagged as `TAG_1` from a specific feature file using 2 parallel processes:**
```bash
behavex features_folder_1/sample_feature.feature -t=@TAG_1 --parallel-processes=2
```
- **Run scenarios located at specific folders using 2 parallel processes:**
```bash
behavex features/feature_1 features/feature_2 --parallel-processes=2
```
- **Run scenarios tagged as `TAG_1`, using 5 parallel processes executing a feature on each process:**
```bash
behavex -t=@TAG_1 --parallel-processes=5 --parallel-scheme=feature
```
- **Perform a dry run of the scenarios tagged as `TAG_1`, and generate the HTML report:**
```bash
behavex -t=@TAG_1 --dry-run
```
- **Run scenarios tagged as `TAG_1`, generating the execution evidence into a specific folder:**
```bash
behavex -t=@TAG_1 -o=execution_evidence
```
## Constraints
- BehaveX is currently implemented on top of Behave **v1.2.6**, and not all Behave arguments are yet supported.
- Parallel execution is implemented using concurrent Behave processes. This means that any hooks defined in the `environment.py` module will run in each parallel process. This includes the **before_all** and **after_all** hooks, which will execute in every parallel process. The same is true for the **before_feature** and **after_feature** hooks when parallel execution is organized by scenario.
## Supported Behave Arguments
- no_color
- color
- define
- exclude
- include
- no_snippets
- no_capture
- name
- capture
- no_capture_stderr
- capture_stderr
- no_logcapture
- logcapture
- logging_level
- summary
- quiet
- stop
- tags
- tags-help
**Important**: Some arguments do not apply when executing tests with more than one parallel process, such as **stop** and **color**.
## Specific Arguments from BehaveX
- **output-folder** (-o or --output-folder): Specifies the output folder for execution reports (JUnit, HTML, JSON).
- **dry-run** (-d or --dry-run): Performs a dry-run by listing scenarios in the output reports.
- **parallel-processes** (--parallel-processes): Specifies the number of parallel Behave processes.
- **parallel-scheme** (--parallel-scheme): Performs parallel test execution by [scenario|feature].
- **show-progress-bar** (--show-progress-bar): Displays a progress bar in the console during parallel test execution.
- **formatter** (--formatter): Specifies a custom formatter for test reports (e.g., Allure formatter).
- **formatter-outdir** (--formatter-outdir): Specifies the output directory for formatter results (default: output/allure-results for Allure).
- **no-formatter-attach-logs** (--no-formatter-attach-logs): Disables automatic attachment of scenario log files to formatter reports.
## Parallel Test Executions
BehaveX manages concurrent executions of Behave instances in multiple processes. You can perform parallel test executions by feature or scenario. When the parallel scheme is by scenario, the examples of a scenario outline are also executed in parallel.

### Examples:
```bash
behavex --parallel-processes=3
behavex -t=@<TAG> --parallel-processes=3
behavex -t=@<TAG> --parallel-processes=2 --parallel-scheme=scenario
behavex -t=@<TAG> --parallel-processes=5 --parallel-scheme=feature
behavex -t=@<TAG> --parallel-processes=5 --parallel-scheme=feature --show-progress-bar
```
### Identifying Each Parallel Process
BehaveX populates the Behave contexts with the `worker_id` user-specific data. This variable contains the id of the current behave process.
For example, if BehaveX is started with `--parallel-processes 2`, the first instance of behave will receive `worker_id=0`, and the second instance will receive `worker_id=1`.
This variable can be accessed within the python tests using `context.config.userdata['worker_id']`.
## Test Execution Reports
### JSON Report
Contains information about test scenarios and execution status. This is the base report generated by BehaveX, which is used to generate the HTML report. Available at:
```bash
<output_folder>/report.json
```
### HTML Report
A friendly test execution report containing information related to test scenarios, execution status, evidence, and metrics. Available at:
```bash
<output_folder>/report.html
```
### JUnit Report
One JUnit file per feature, available at:
```bash
<output_folder>/behave/*.xml
```
The JUnit reports have been replaced by the ones generated by the test wrapper, just to support muting tests scenarios on build servers
## Attaching Images to the HTML Report
You can attach images or screenshots to the HTML report using your own mechanism to capture screenshots or retrieve images. Utilize the **attach_image_file** or **attach_image_binary** methods provided by the wrapper.
These methods can be called from hooks in the `environment.py` file or directly from step definitions.
### Example 1: Attaching an Image File
```python
from behavex_images import image_attachments
@given('I take a screenshot from the current page')
def step_impl(context):
image_attachments.attach_image_file(context, 'path/to/image.png')
```
### Example 2: Attaching an Image Binary
```python
from behavex_images import image_attachments
from behavex_images.image_attachments import AttachmentsCondition
def before_all(context):
image_attachments.set_attachments_condition(context, AttachmentsCondition.ONLY_ON_FAILURE)
def after_step(context, step):
image_attachments.attach_image_binary(context, selenium_driver.get_screenshot_as_png())
```
By default, images are attached to the HTML report only when the test fails. You can modify this behavior by setting the condition using the **set_attachments_condition** method.



For more information, check the [behavex-images](https://github.com/abmercado19/behavex-images) library, which is included with BehaveX 3.3.0 and above.
If you are using BehaveX < 3.3.0, you can still attach images to the HTML report by installing the **behavex-images** package with the following command:
> pip install behavex-images
## Attaching Additional Execution Evidence to the HTML Report
Providing ample evidence in test execution reports is crucial for identifying the root cause of issues. Any evidence file generated during a test scenario can be stored in a folder path provided by the wrapper for each scenario.
The evidence folder path is automatically generated and stored in the **"context.evidence_path"** context variable. This variable is updated by the wrapper before executing each scenario, and all files copied into that path will be accessible from the HTML report linked to the executed scenario.
## Test Logs per Scenario
The HTML report includes detailed test execution logs for each scenario. These logs are generated using the **logging** library and are linked to the specific test scenario. This feature allows for easy debugging and analysis of test failures.
## Metrics and Insights
The HTML report provides a range of metrics to help you understand the performance and effectiveness of your test suite. These metrics include:
* **Automation Rate**: The percentage of scenarios that are automated.
* **Pass Rate**: The percentage of scenarios that have passed.
* **Steps Execution Counter and Average Execution Time**: These metrics provide insights into the execution time and frequency of steps within scenarios.
## Dry Runs
BehaveX enhances the traditional Behave dry run feature to provide more value. The HTML report generated during a dry run can be shared with stakeholders to discuss scenario specifications and test plans.
To execute a dry run, we recommend using the following command:
> behavex -t=@TAG --dry-run
## Muting Test Scenarios
In some cases, you may want to mute test scenarios that are failing but are not critical to the build process. This can be achieved by adding the @MUTE tag to the scenario. Muted scenarios will still be executed, but their failures will not be reported in the JUnit reports. However, the execution details will be visible in the HTML report.
## Handling Failing Scenarios
### @AUTORETRY Tag
For scenarios that are prone to intermittent failures or are affected by infrastructure issues, you can use the @AUTORETRY tag. This tag enables automatic re-execution of the scenario in case of failure.
You can also specify the number of retries by adding the total retries as a suffix in the @AUTORETRY tag. For example, @AUTORETRY_3 will retry the scenario 3 times if the scenario fails.
The re-execution will be performed right after a failing execution arises, and the latest execution is the one that will be reported.
### Rerunning Failed Scenarios
After executing tests, if there are failing scenarios, a **failing_scenarios.txt** file will be generated in the output folder. This file allows you to rerun all failed scenarios using the following command:
> behavex -rf=./<OUTPUT_FOLDER\>/failing_scenarios.txt
or
> behavex --rerun-failures=./<OUTPUT_FOLDER\>/failing_scenarios.txt
To avoid overwriting the previous test report, it is recommended to specify a different output folder using the **-o** or **--output-folder** argument.
Note that the **-o** or **--output-folder** argument does not work with parallel test executions.
## Displaying Progress Bar in Console
When running tests in parallel, you can display a progress bar in the console to monitor the test execution progress. To enable the progress bar, use the **--show-progress-bar** argument:
> behavex -t=@TAG --parallel-processes=3 --show-progress-bar
If you are printing logs in the console, you can configure the progress bar to display updates on a new line by adding the following setting to the BehaveX configuration file:
> [progress_bar]
>
> print_updates_in_new_lines="true"
## Allure Reports Integration
BehaveX provides integration with Allure, a flexible, lightweight multi-language test reporting tool. The Allure formatter creates detailed and visually appealing reports that include comprehensive test information, evidence, and categorization of test results.
**Note**: Since BehaveX is designed to run tests in parallel, the Allure formatter processes the consolidated `report.json` file after all parallel test executions are completed. This ensures that all test results from different parallel processes are properly aggregated before generating the final Allure report.
### Prerequisites
1. Install Allure on your system. Please refer to the [official Allure installation documentation](https://docs.qameta.io/allure/#_installing_a_commandline) for detailed instructions for your operating system.
### Using the Allure Formatter
To generate Allure reports, use the `--formatter` argument to specify the Allure formatter:
```bash
behavex -t=@TAG --formatter=behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter
```
By default, the Allure results will be generated in the `output/allure-results` directory. You can specify a different output directory using the `--formatter-outdir` argument:
```bash
behavex -t=@TAG --formatter=behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter --formatter-outdir=my-allure-results
```
### Attaching Screenshots and Evidence to Allure Reports
When using Allure reports, you should continue to use the same methods for attaching screenshots and evidence as described in the sections above:
- **For screenshots**: Use the methods described in [Attaching Images to the HTML Report](#attaching-images-to-the-html-report) section. The `attach_image_file()` and `attach_image_binary()` methods from the `behavex_images` library will automatically work with Allure reports.
- **For additional evidence**: Use the approach described in [Attaching Additional Execution Evidence to the HTML Report](#attaching-additional-execution-evidence-to-the-html-report) section. Files stored in the `context.evidence_path` will be automatically included in the Allure reports.
The evidence and screenshots attached using these methods will be seamlessly integrated into your Allure reports, providing comprehensive test execution documentation.
### Viewing Allure Reports
After running the tests, you can generate and view the Allure report using the following commands:
```bash
# Serve the report (opens in a browser)
allure serve output/allure-results
# Or... generate a single HTML file report
allure generate output/allure-results --output output/allure-report --clean --single-file
# Or... generate a static report
allure generate output/allure-results --output output/allure-report --clean
```
### Disabling Log Attachments
By default, `scenario.log` files are attached to each scenario in the Allure report. You can disable this by passing the `--no-formatter-attach-logs` argument:
```bash
behavex --formatter behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter --no-formatter-attach-logs
```
## Show Your Support
**If you find this project helpful or interesting, we would appreciate it if you could give it a star** (:star:). It's a simple way to show your support and let us know that you find value in our work.
By starring this repository, you help us gain visibility among other developers and contributors. It also serves as motivation for us to continue improving and maintaining this project.
Thank you in advance for your support! We truly appreciate it.
Raw data
{
"_id": null,
"home_page": "https://github.com/hrcorval/behavex",
"name": "behavex",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": null,
"keywords": null,
"author": "Hernan Rey",
"author_email": "Hernan Rey <behavex_users@googlegroups.com>",
"download_url": "https://files.pythonhosted.org/packages/f1/38/85da2dc0b1a1d8afe2f657afec393665f5b2decfb829ca6491147917e9b8/behavex-4.3.1.tar.gz",
"platform": "any",
"description": "[](https://pepy.tech/project/behavex)\n[](https://badge.fury.io/py/behavex)\n[](https://pypi.org/project/behavex/)\n[](https://libraries.io/github/hrcorval/behavex)\n[](https://github.com/hrcorval/behavex/blob/main/LICENSE)\n[](https://github.com/hrcorval/behavex/actions)\n[](https://github.com/hrcorval/behavex/commits/main)\n\n# BehaveX Documentation\n\n## \ud83d\udce2 Important News\n\n**\ud83c\udf89 NEW: Allure Reports Integration!** *(Available since BehaveX 4.2.1)*\n\nBehaveX now provides seamless integration with Allure, the popular test reporting framework! Generate beautiful, comprehensive test reports with detailed evidence.\n\n[Learn more about Allure integration](#allure-reports-integration) \ud83d\udc48\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Features](#features)\n- [Installation Instructions](#installation-instructions)\n- [Execution Instructions](#execution-instructions)\n- [Constraints](#constraints)\n- [Supported Behave Arguments](#supported-behave-arguments)\n- [Specific Arguments from BehaveX](#specific-arguments-from-behavex)\n- [Parallel Test Executions](#parallel-test-executions)\n- [Test Execution Reports](#test-execution-reports)\n- [Attaching Images to the HTML Report](#attaching-images-to-the-html-report)\n- [Attaching Additional Execution Evidence to the HTML Report](#attaching-additional-execution-evidence-to-the-html-report)\n- [Test Logs per Scenario](#test-logs-per-scenario)\n- [Metrics and Insights](#metrics-and-insights)\n- [Dry Runs](#dry-runs)\n- [Muting Test Scenarios](#muting-test-scenarios)\n- [Handling Failing Scenarios](#handling-failing-scenarios)\n- [Displaying Progress Bar in Console](#displaying-progress-bar-in-console)\n- [Allure Reports Integration](#allure-reports-integration)\n- [Show Your Support](#show-your-support)\n\n## Introduction\n\n**BehaveX** is a BDD testing solution built on top of the Python Behave library, orchestrating parallel test sessions to enhance your testing workflow with additional features and performance improvements. It's particularly beneficial in the following scenarios:\n\n- **Accelerating test execution**: Significantly reduce test run times through parallel execution by feature or scenario.\n- **Enhancing test reporting**: Generate comprehensive and visually appealing HTML and JSON reports for in-depth analysis and integration with other tools.\n- **Improving test visibility**: Provide detailed evidence, such as screenshots and logs, essential for understanding test failures and successes.\n- **Optimizing test automation**: Utilize features like test retries, test muting, and performance metrics for efficient test maintenance and analysis.\n- **Managing complex test suites**: Handle large test suites with advanced features for organization, execution, and comprehensive reporting through multiple formats and custom formatters.\n\n## Features\n\nBehaveX provides the following features:\n\n- **Parallel Test Executions**: Execute tests using multiple processes, either by feature or by scenario.\n- **Enhanced Reporting**: Generate comprehensive reports in multiple formats (HTML, JSON, JUnit) and utilize custom formatters like Allure for advanced reporting capabilities that can be exported and integrated with third-party tools.\n- **Evidence Collection**: Include images/screenshots and additional evidence in the HTML report.\n- **Test Logs**: Automatically compile logs generated during test execution into individual log reports for each scenario.\n- **Test Muting**: Add the `@MUTE` tag to test scenarios to execute them without including them in JUnit reports.\n- **Execution Metrics**: Generate metrics in the HTML report for the executed test suite, including Automation Rate, Pass Rate, Steps execution counter and average execution time.\n- **Dry Runs**: Perform dry runs to see the full list of scenarios in the HTML report without executing the tests. It overrides the `-d` Behave argument.\n- **Auto-Retry for Failing Scenarios**: Use the `@AUTORETRY` tag to automatically re-execute failing scenarios. Also, you can re-run all failing scenarios using the **failing_scenarios.txt** file.\n\n\n\n\n\n## Installation Instructions\n\nTo install BehaveX, execute the following command:\n\n```bash\npip install behavex\n```\n\n\n\n## Execution Instructions\n\nExecute BehaveX in the same way as Behave from the command line, using the `behavex` command. Here are some examples:\n\n- **Run scenarios tagged as `TAG_1` but not `TAG_2`:**\n ```bash\n behavex -t=@TAG_1 -t=~@TAG_2\n ```\n\n- **Run scenarios tagged as `TAG_1` or `TAG_2`:**\n ```bash\n behavex -t=@TAG_1,@TAG_2\n ```\n\n- **Run scenarios tagged as `TAG_1` using 4 parallel processes:**\n ```bash\n behavex -t=@TAG_1 --parallel-processes=4 --parallel-scheme=scenario\n ```\n\n- **Run scenarios located at specific folders using 2 parallel processes:**\n ```bash\n behavex features/features_folder_1 features/features_folder_2 --parallel-processes=2\n ```\n\n- **Run scenarios from a specific feature file using 2 parallel processes:**\n ```bash\n behavex features_folder_1/sample_feature.feature --parallel-processes=2\n ```\n\n- **Run scenarios tagged as `TAG_1` from a specific feature file using 2 parallel processes:**\n ```bash\n behavex features_folder_1/sample_feature.feature -t=@TAG_1 --parallel-processes=2\n ```\n\n- **Run scenarios located at specific folders using 2 parallel processes:**\n ```bash\n behavex features/feature_1 features/feature_2 --parallel-processes=2\n ```\n\n- **Run scenarios tagged as `TAG_1`, using 5 parallel processes executing a feature on each process:**\n ```bash\n behavex -t=@TAG_1 --parallel-processes=5 --parallel-scheme=feature\n ```\n\n- **Perform a dry run of the scenarios tagged as `TAG_1`, and generate the HTML report:**\n ```bash\n behavex -t=@TAG_1 --dry-run\n ```\n\n- **Run scenarios tagged as `TAG_1`, generating the execution evidence into a specific folder:**\n ```bash\n behavex -t=@TAG_1 -o=execution_evidence\n ```\n\n## Constraints\n\n- BehaveX is currently implemented on top of Behave **v1.2.6**, and not all Behave arguments are yet supported.\n- Parallel execution is implemented using concurrent Behave processes. This means that any hooks defined in the `environment.py` module will run in each parallel process. This includes the **before_all** and **after_all** hooks, which will execute in every parallel process. The same is true for the **before_feature** and **after_feature** hooks when parallel execution is organized by scenario.\n\n## Supported Behave Arguments\n\n- no_color\n- color\n- define\n- exclude\n- include\n- no_snippets\n- no_capture\n- name\n- capture\n- no_capture_stderr\n- capture_stderr\n- no_logcapture\n- logcapture\n- logging_level\n- summary\n- quiet\n- stop\n- tags\n- tags-help\n\n**Important**: Some arguments do not apply when executing tests with more than one parallel process, such as **stop** and **color**.\n\n## Specific Arguments from BehaveX\n\n- **output-folder** (-o or --output-folder): Specifies the output folder for execution reports (JUnit, HTML, JSON).\n- **dry-run** (-d or --dry-run): Performs a dry-run by listing scenarios in the output reports.\n- **parallel-processes** (--parallel-processes): Specifies the number of parallel Behave processes.\n- **parallel-scheme** (--parallel-scheme): Performs parallel test execution by [scenario|feature].\n- **show-progress-bar** (--show-progress-bar): Displays a progress bar in the console during parallel test execution.\n- **formatter** (--formatter): Specifies a custom formatter for test reports (e.g., Allure formatter).\n- **formatter-outdir** (--formatter-outdir): Specifies the output directory for formatter results (default: output/allure-results for Allure).\n- **no-formatter-attach-logs** (--no-formatter-attach-logs): Disables automatic attachment of scenario log files to formatter reports.\n\n## Parallel Test Executions\n\nBehaveX manages concurrent executions of Behave instances in multiple processes. You can perform parallel test executions by feature or scenario. When the parallel scheme is by scenario, the examples of a scenario outline are also executed in parallel.\n\n\n\n### Examples:\n```bash\nbehavex --parallel-processes=3\nbehavex -t=@<TAG> --parallel-processes=3\nbehavex -t=@<TAG> --parallel-processes=2 --parallel-scheme=scenario\nbehavex -t=@<TAG> --parallel-processes=5 --parallel-scheme=feature\nbehavex -t=@<TAG> --parallel-processes=5 --parallel-scheme=feature --show-progress-bar\n```\n\n### Identifying Each Parallel Process\n\nBehaveX populates the Behave contexts with the `worker_id` user-specific data. This variable contains the id of the current behave process.\n\nFor example, if BehaveX is started with `--parallel-processes 2`, the first instance of behave will receive `worker_id=0`, and the second instance will receive `worker_id=1`.\n\nThis variable can be accessed within the python tests using `context.config.userdata['worker_id']`.\n\n\n## Test Execution Reports\n\n### JSON Report\nContains information about test scenarios and execution status. This is the base report generated by BehaveX, which is used to generate the HTML report. Available at:\n```bash\n<output_folder>/report.json\n```\n\n### HTML Report\nA friendly test execution report containing information related to test scenarios, execution status, evidence, and metrics. Available at:\n```bash\n<output_folder>/report.html\n```\n\n### JUnit Report\nOne JUnit file per feature, available at:\n```bash\n<output_folder>/behave/*.xml\n```\nThe JUnit reports have been replaced by the ones generated by the test wrapper, just to support muting tests scenarios on build servers\n\n## Attaching Images to the HTML Report\n\nYou can attach images or screenshots to the HTML report using your own mechanism to capture screenshots or retrieve images. Utilize the **attach_image_file** or **attach_image_binary** methods provided by the wrapper.\n\nThese methods can be called from hooks in the `environment.py` file or directly from step definitions.\n\n### Example 1: Attaching an Image File\n```python\nfrom behavex_images import image_attachments\n\n@given('I take a screenshot from the current page')\ndef step_impl(context):\n image_attachments.attach_image_file(context, 'path/to/image.png')\n```\n\n### Example 2: Attaching an Image Binary\n```python\nfrom behavex_images import image_attachments\nfrom behavex_images.image_attachments import AttachmentsCondition\n\ndef before_all(context):\n image_attachments.set_attachments_condition(context, AttachmentsCondition.ONLY_ON_FAILURE)\n\ndef after_step(context, step):\n image_attachments.attach_image_binary(context, selenium_driver.get_screenshot_as_png())\n```\n\nBy default, images are attached to the HTML report only when the test fails. You can modify this behavior by setting the condition using the **set_attachments_condition** method.\n\n\n\n\n\nFor more information, check the [behavex-images](https://github.com/abmercado19/behavex-images) library, which is included with BehaveX 3.3.0 and above.\n\nIf you are using BehaveX < 3.3.0, you can still attach images to the HTML report by installing the **behavex-images** package with the following command:\n\n> pip install behavex-images\n\n## Attaching Additional Execution Evidence to the HTML Report\n\nProviding ample evidence in test execution reports is crucial for identifying the root cause of issues. Any evidence file generated during a test scenario can be stored in a folder path provided by the wrapper for each scenario.\n\nThe evidence folder path is automatically generated and stored in the **\"context.evidence_path\"** context variable. This variable is updated by the wrapper before executing each scenario, and all files copied into that path will be accessible from the HTML report linked to the executed scenario.\n\n## Test Logs per Scenario\n\nThe HTML report includes detailed test execution logs for each scenario. These logs are generated using the **logging** library and are linked to the specific test scenario. This feature allows for easy debugging and analysis of test failures.\n\n## Metrics and Insights\n\nThe HTML report provides a range of metrics to help you understand the performance and effectiveness of your test suite. These metrics include:\n\n* **Automation Rate**: The percentage of scenarios that are automated.\n* **Pass Rate**: The percentage of scenarios that have passed.\n* **Steps Execution Counter and Average Execution Time**: These metrics provide insights into the execution time and frequency of steps within scenarios.\n\n## Dry Runs\n\nBehaveX enhances the traditional Behave dry run feature to provide more value. The HTML report generated during a dry run can be shared with stakeholders to discuss scenario specifications and test plans.\n\nTo execute a dry run, we recommend using the following command:\n\n> behavex -t=@TAG --dry-run\n\n## Muting Test Scenarios\n\nIn some cases, you may want to mute test scenarios that are failing but are not critical to the build process. This can be achieved by adding the @MUTE tag to the scenario. Muted scenarios will still be executed, but their failures will not be reported in the JUnit reports. However, the execution details will be visible in the HTML report.\n\n## Handling Failing Scenarios\n\n### @AUTORETRY Tag\n\nFor scenarios that are prone to intermittent failures or are affected by infrastructure issues, you can use the @AUTORETRY tag. This tag enables automatic re-execution of the scenario in case of failure.\n\nYou can also specify the number of retries by adding the total retries as a suffix in the @AUTORETRY tag. For example, @AUTORETRY_3 will retry the scenario 3 times if the scenario fails.\n\nThe re-execution will be performed right after a failing execution arises, and the latest execution is the one that will be reported.\n\n### Rerunning Failed Scenarios\n\nAfter executing tests, if there are failing scenarios, a **failing_scenarios.txt** file will be generated in the output folder. This file allows you to rerun all failed scenarios using the following command:\n\n> behavex -rf=./<OUTPUT_FOLDER\\>/failing_scenarios.txt\n\nor\n\n> behavex --rerun-failures=./<OUTPUT_FOLDER\\>/failing_scenarios.txt\n\nTo avoid overwriting the previous test report, it is recommended to specify a different output folder using the **-o** or **--output-folder** argument.\n\nNote that the **-o** or **--output-folder** argument does not work with parallel test executions.\n\n## Displaying Progress Bar in Console\n\nWhen running tests in parallel, you can display a progress bar in the console to monitor the test execution progress. To enable the progress bar, use the **--show-progress-bar** argument:\n\n> behavex -t=@TAG --parallel-processes=3 --show-progress-bar\n\nIf you are printing logs in the console, you can configure the progress bar to display updates on a new line by adding the following setting to the BehaveX configuration file:\n\n> [progress_bar]\n>\n> print_updates_in_new_lines=\"true\"\n\n## Allure Reports Integration\n\nBehaveX provides integration with Allure, a flexible, lightweight multi-language test reporting tool. The Allure formatter creates detailed and visually appealing reports that include comprehensive test information, evidence, and categorization of test results.\n\n**Note**: Since BehaveX is designed to run tests in parallel, the Allure formatter processes the consolidated `report.json` file after all parallel test executions are completed. This ensures that all test results from different parallel processes are properly aggregated before generating the final Allure report.\n\n### Prerequisites\n\n1. Install Allure on your system. Please refer to the [official Allure installation documentation](https://docs.qameta.io/allure/#_installing_a_commandline) for detailed instructions for your operating system.\n\n### Using the Allure Formatter\n\nTo generate Allure reports, use the `--formatter` argument to specify the Allure formatter:\n\n```bash\nbehavex -t=@TAG --formatter=behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter\n```\n\nBy default, the Allure results will be generated in the `output/allure-results` directory. You can specify a different output directory using the `--formatter-outdir` argument:\n\n```bash\nbehavex -t=@TAG --formatter=behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter --formatter-outdir=my-allure-results\n```\n\n### Attaching Screenshots and Evidence to Allure Reports\n\nWhen using Allure reports, you should continue to use the same methods for attaching screenshots and evidence as described in the sections above:\n\n- **For screenshots**: Use the methods described in [Attaching Images to the HTML Report](#attaching-images-to-the-html-report) section. The `attach_image_file()` and `attach_image_binary()` methods from the `behavex_images` library will automatically work with Allure reports.\n\n- **For additional evidence**: Use the approach described in [Attaching Additional Execution Evidence to the HTML Report](#attaching-additional-execution-evidence-to-the-html-report) section. Files stored in the `context.evidence_path` will be automatically included in the Allure reports.\n\nThe evidence and screenshots attached using these methods will be seamlessly integrated into your Allure reports, providing comprehensive test execution documentation.\n\n### Viewing Allure Reports\n\nAfter running the tests, you can generate and view the Allure report using the following commands:\n\n```bash\n# Serve the report (opens in a browser)\nallure serve output/allure-results\n\n# Or... generate a single HTML file report\nallure generate output/allure-results --output output/allure-report --clean --single-file\n\n# Or... generate a static report\nallure generate output/allure-results --output output/allure-report --clean\n```\n\n### Disabling Log Attachments\nBy default, `scenario.log` files are attached to each scenario in the Allure report. You can disable this by passing the `--no-formatter-attach-logs` argument:\n```bash\nbehavex --formatter behavex.outputs.formatters.allure_behavex_formatter:AllureBehaveXFormatter --no-formatter-attach-logs\n```\n\n## Show Your Support\n\n**If you find this project helpful or interesting, we would appreciate it if you could give it a star** (:star:). It's a simple way to show your support and let us know that you find value in our work.\n\nBy starring this repository, you help us gain visibility among other developers and contributors. It also serves as motivation for us to continue improving and maintaining this project.\n\nThank you in advance for your support! We truly appreciate it.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Agile testing framework on top of Behave (BDD).",
"version": "4.3.1",
"project_urls": {
"Homepage": "https://github.com/hrcorval/behavex"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ce92b7e8ceb4a36dc5f10479938216bc8d7a9c7b68c3d700c2fcad0db82eb81d",
"md5": "e2deb0c66e4fe6345155d5bb761a65ac",
"sha256": "44cac0ea6e99c244006f9749b0ac0328839d8ad664e762eda014a0d793c51a3b"
},
"downloads": -1,
"filename": "behavex-4.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e2deb0c66e4fe6345155d5bb761a65ac",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 673829,
"upload_time": "2025-07-16T12:48:06",
"upload_time_iso_8601": "2025-07-16T12:48:06.061637Z",
"url": "https://files.pythonhosted.org/packages/ce/92/b7e8ceb4a36dc5f10479938216bc8d7a9c7b68c3d700c2fcad0db82eb81d/behavex-4.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f13885da2dc0b1a1d8afe2f657afec393665f5b2decfb829ca6491147917e9b8",
"md5": "93aba3680d84fb8bb9e9ac7dbced1d19",
"sha256": "b826d3f3d1cd638ae7e501e61a288a603bd731df42eb1f78e57af80cdeadc797"
},
"downloads": -1,
"filename": "behavex-4.3.1.tar.gz",
"has_sig": false,
"md5_digest": "93aba3680d84fb8bb9e9ac7dbced1d19",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 608619,
"upload_time": "2025-07-16T12:48:11",
"upload_time_iso_8601": "2025-07-16T12:48:11.601852Z",
"url": "https://files.pythonhosted.org/packages/f1/38/85da2dc0b1a1d8afe2f657afec393665f5b2decfb829ca6491147917e9b8/behavex-4.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-16 12:48:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hrcorval",
"github_project": "behavex",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "behavex"
}