BehaveからSeleniumWebDriverを使ってスクリーンショットを撮り、Allureのレポートに添付する流れ
このエントリでは、
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
以上。