このエントリでは、
BehaveからSeleniumWebDriverを使って、
ブラウザのスクリーンショットを撮り、Allureのレポートに添付する流れを記載します。

BehaveからSeleniumWebDriverを使うならbehave-webdriverと言うライブラリがありますが、
対応しているSeleniumがやや古いのと、日本語でシナリオ書けないので、
このエントリでは、ライブラリを使用せずに対応することにします。

behave-webdriver
https://behave-webdriver.readthedocs.io/en/latest/index.html

このライブラリのコード自体は、stepの書き方などの参考になると思います。

環境の準備

まずは、環境のセットアップです。

Pythonの仮想環境を作り、 Behave, Allure Behave, Seleniumをインストールします。

python -m venv venv
. venv/bin/activate
pip install behave
pip install allure-behave
pip install selenium

環境にあったChromeのWebDriverを、次のURLからダウンロード・展開します。

Chrome for Testing availability https://googlechromelabs.github.io/chrome-for-testing/

テストコードの作成

次に、テストコードを用意します。

.behavercに、allureのレポートを出力する設定を記載します。

; -- FILE: .behaverc
[behave]
format=allure_behave.formatter:AllureFormatter
outfiles=allure-results

テストコードを記載します。
SeleniumWebDriverでスクリーンショットを行うテストコードの例です。

# -- FILE: sample.feature
Feature: sample feature
    Scenario: sample scenario
        When sample step
# -- FILE: environment.py
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

def before_all(context):
    context.webdriver = webdriver.Chrome(
        service=Service(executable_path=os.getenv("CHROMEWEBDRIVER", "./chromedriver")),
        options=Options()
    )

def after_all(context):
    context.webdriver.quit()
# -- FILE: steps/sample.py
from behave import *
import allure

@step('sample step')
def step_impl(context):
    context.webdriver.get("http://www.google.com")
    png_bytes = context.webdriver.get_screenshot_as_png()
    allure.attach(png_bytes, name="画像", attachment_type=allure.attachment_type.PNG)

テストコードの実行

用意したテストコードを実行します。

ChromeのWebDriverの配置先を、
環境変数CHROMEWEBDRIVERに指定して、テストを実行します。

$ CHROMEWEBDRIVER=※配置先パス※/chromedriver behave sample.feature
Feature: sample feature # sample.feature:2

  Scenario: sample scenario  # sample.feature:3
    When sample step         # steps/sample.py:5 0.905s

1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
1 step passed, 0 failed, 0 skipped, 0 undefined
Took 0m0.905s

実行すると、allure-report配下にテスト結果が記録されます。

allureのレポートサーバを起動して、
レポートを確認すると、該当ステップに画像が添付されています。

# allureのインストールは以下を参照してください。
# Install or upgrade Allure Report
# https://allurereport.org/docs/install/

$ allure serve

behave-selenium-screenshot01

以上。