Skip to main content

agent-python-behave

PyPI version PyPI pyversions CI codecov Join Slack chat! stackoverflow

Behave extension for reporting test results of Behave to the ReportPortal.

Usage

Installation

To install agent-python-behave run:

pip install behave-reportportal

You can find an example of integration with behave agent here. You can just copy this file to your features folder.

Configuration

Prepare the config file behave.ini in the root directory of tests or specify any one using behave command line option:

behave -D config_file=<path_to_config_file>

The behave.ini file should have the following mandatory fields under [report_portal] section:

  • project - name of project in ReportPortal
  • endpoint - address of ReportPortal Server

Example of behave.ini:

[report_portal]
api_key = fb586627-32be-47dd-93c1-678873458a5f
endpoint = http://192.168.1.10:8080
project = user_personal
launch_name = AnyLaunchName
launch_attributes = Slow Smoke
launch_description = Smoke test

The following parameters are optional:

  • enabled = True - Enable / disable ReportPortal reporting.
  • api_key - value can be found in the User Profile section. Required if OAuth 2.0 is not configured.
  • oauth_uri = https://reportportal.example.com/uat/sso/oauth/token - OAuth 2.0 token endpoint URL for password grant authentication. Required if API key is not used.
  • oauth_username = my-username - OAuth 2.0 username for password grant authentication. Required if OAuth 2.0 is used.
  • oauth_password = my-password - OAuth 2.0 password for password grant authentication. Required if OAuth 2.0 is used.
  • oauth_client_id = client-id - OAuth 2.0 client identifier. Required if OAuth 2.0 is used.
  • oauth_client_secret = client-id-secret - OAuth 2.0 client secret.
  • oauth_scope = offline_access - OAuth 2.0 access token scope.
  • client_type = SYNC - Type of the under-the-hood ReportPortal client implementation. Possible values: [SYNC, ASYNC_THREAD, ASYNC_BATCHED].
  • launch_name = AnyLaunchName - launch name (default value is 'Python Behave Launch')
  • launch_uuid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - UUID of the existing launch (the session will not handle the lifecycle of the given launch)
  • launch_attributes = Smoke Env:Python3 - list of attributes for launch
  • launch_description = Smoke test - launch description
  • debug_mode = True - creates the launch either as debug or default mode (defaults to False)
  • log_layout = Nested - responsible for Scenario, Step or Nested based logging (Scenario based approach is used by default)
  • is_skipped_an_issue = False - option to mark skipped tests as not 'To Investigate' items on Server side.
  • retries = 3 - amount of retries for performing REST calls to RP server
  • rerun = True - marks the launch as the rerun
  • rerun_of = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - launch id to rerun
  • launch_uuid_print = True - Enables printing Launch UUID on test run start. Default False.
  • launch_uuid_print_output = stderr - Launch UUID print output. Default stdout. Possible values: [stderr, stdout].
  • connect_timeout = 15 - Connection timeout to ReportPortal server. Default value is "10.0".
  • read_timeout = 15 - Response read timeout for ReportPortal connection. Default value is "10.0".
  • log_batch_size = 20 - maximum number of log entries which will be sent by the agent at once
  • log_batch_payload_limit = 65000000 - maximum payload size of a log batch which will be sent by the agent at once

If you would like to override the above parameters from command line, or from CI environment based on your build, then pass:

  • -D parameter=value during invocation.

Launching

To execute tests with ReportPortal run behave command and specify path to feature files:

behave ./tests/features

Test item attributes

Tag attribute can be used to specify attributes for features and scenarios. Attributes should be listed inside brackets of attribute tag separated by commas.

Example:

@attribute(key:value, value2)
@attribute(some_other_attribute)
Feature: feature name

    @attribute(key:value, value2, value3)
    Scenario: scenario name

Logging

For logging of the test item flow to ReportPortal, please, use the python logging handler and logger class provided by extension like below.

In environment.py:

import logging

from reportportal_client import RPLogger, RPLogHandler

from behave_reportportal.behave_agent import BehaveAgent, create_rp_service
from behave_reportportal.config import read_config


def before_all(context):
    cfg = read_config(context)
    context.rp_client = create_rp_service(cfg)
    context.rp_client.start()
    context.rp_agent = BehaveAgent(cfg, context.rp_client)
    context.rp_agent.start_launch(context)
    logging.setLoggerClass(RPLogger)
    log = logging.getLogger(__name__)
    log.setLevel("DEBUG")
    rph = RPLogHandler(rp_client=context.rp_client)
    log.addHandler(rph)
    context.log = log

Logger provides ability to attach some file in scope of log message (see examples below).

In steps:

@given("I want to calculate {number_a:d} and {number_b:d}")
def calculate_two_numbers(context, number_a, number_b):
    context.number_a = number_a
    context.number_b = number_b
    context.log.info("log message")

    # Message with an attachment.
    import subprocess
    free_memory = subprocess.check_output("free -h".split())
    context.log.info(
        "log message with attachment",
        attachment={
            "name": "free_memory.txt",
            "data": free_memory,
            "mime": "application/octet-stream",
        },
    )

Test case ID

It's possible to mark some scenario with test_case_id(<some_id>) tag. ID specified in brackets will be sent to ReportPortal.

Integration with GA

ReportPortal is now supporting integrations with more than 15 test frameworks simultaneously. In order to define the most popular agents and plan the team workload accordingly, we are using Google analytics.

ReportPortal collects information about agent name and its version only. This information is sent to Google analytics on the launch start. Please help us to make our work effective. If you still want to switch Off Google analytics, please change env variable the way below.

export AGENT_NO_ANALYTICS=1

Licensed under the Apache 2.0 license (see the LICENSE file).

Metadata

Release files for behave-reportportal 5.1.6

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

Source distribution (sdist)

Source distribution for behave-reportportal 5.1.6
File Size Uploaded Provenance Actions
behave_reportportal-5.1.6.tar.gz 19.1 kB Without provenance Details for behave_reportportal-5.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for behave-reportportal 5.1.6
File Interpreter ABI Platform Actions
behave_reportportal-5.1.6-py2.py3-none-any.whl Python 3, Python 2 none any Details for behave_reportportal-5.1.6-py2.py3-none-any.whl

Total release size: 36.1 kB

Release files / behave_reportportal-5.1.6.tar.gz

Download URL behave_reportportal-5.1.6.tar.gz
Size 19.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e63e672ee07a87d1dcbca72cc1670577986b0f2b60c2aa432f2dcf0ddc0ecb11
BLAKE2b-256 checksum
How to use checksums
66b4d6f60fa24f9fa1910598132d7368ace71cd605d4e2d97e2394107e5f3607
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / behave_reportportal-5.1.6-py2.py3-none-any.whl

Download URL behave_reportportal-5.1.6-py2.py3-none-any.whl
Size 17.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
feb228f7e74d409a6860dafed69b28b249e9fd6a58822805be960150e3fe8e64
BLAKE2b-256 checksum
How to use checksums
5aaae5fbb9cbd2c2c7726eb857d53e7c276e6eca41a26e1b112952b674526a5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for behave-reportportal 5.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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