emuse / behat-html-formatter
这将创建一个用于Behat的HTML格式化工具。
Requires
- php: >=5.3.0
- behat/behat: ~3.0
- behat/gherkin: ~4.2
- twig/twig: ~3.0
Requires (Dev)
- phpunit/phpunit: ~4.1
- symfony/process: >2.3,<4.0
This package is not auto-updated.
Last update: 2024-09-13 13:46:58 UTC
README
Behat 3扩展,用于从测试结果生成HTML报告。
Twig报告
Behat 2报告
如何使用?
- 此工具可以使用composer轻松安装。
- 在
behat.yml
文件中定义格式化程序 - 在
behat.yml
文件中修改设置
安装
先决条件
此扩展需要
- PHP 5.3.x或更高版本
- Behat 3.x或更高版本
通过composer
保持套件更新的最简单方法是使用 Composer
使用composer安装
$ composer require --dev emuse/behat-html-formatter
使用 composer.json
安装
将 BehatHtmlFormatterPlugin 添加到 composer.json
中的依赖项列表中。
{ "require": { "behat/behat": "3.*@stable", "emuse/behat-html-formatter": "0.1.*", }, "minimum-stability": "dev", "config": { "bin-dir": "bin/" } }
然后只需使用composer安装即可
$ composer install --dev --prefer-dist
您可以在其 官方网站 上了解更多关于Composer的信息。
基本用法
通过在 behat.yml
中指定其类来激活扩展
# behat.yml default: suites: default: contexts: - emuse\BehatHTMLFormatter\Context\ScreenshotContext: screenshotDir: build/html/behat/assets/screenshots ... # All your awesome suites come here formatters: html: output_path: %paths.base%/build/html/behat extensions: emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension: name: html renderer: Twig,Behat2 file_name: index print_args: true print_outp: true loop_break: true
命令行选项
将以下内容添加到您的behat命令中,以打印报告
behat --format html --out MYDIRECTORY
将格式设置为html将输出您在下面配置的各种报告(Behat2、Twig、Minimal等)
您还需要指定报告的输出目录为 MYDIRECTORY。
配置
格式化程序配置
output_path
- Behat将保存HTML报告的位置。使用%paths.base%
构建完整路径。
扩展配置
renderer
- Behat将用于渲染的引擎,因此Behat应输出的报告格式类型(允许多个报告格式,用逗号分隔)。允许的值是- Behat2 - 生成类似于Behat 2生成的HTML报告。
- Twig 基于Twig的新颖且更现代的格式。
- Minimal 极简的HTML输出。
file_name
- (可选) Behat将使用固定的文件名,并在每次构建后覆盖相同的文件。默认情况下,Behat将创建一个使用随机名称的新HTML文件("renderer name"_"date hour")。print_args
- (可选) 如果设置为true
,Behat将添加每个步骤的所有参数到报告中。(例如,表格。)print_outp
- (可选) 如果设置为true
,Behat将添加每个步骤的输出到报告中。(例如,异常。)loop_break
- (可选) 如果设置为true
,Behat将在打印场景轮廓时在每个执行后添加分隔换行符。
屏幕截图
存在将屏幕截图嵌入测试失败的功能。
目前仅支持png图像格式。
为了嵌入屏幕截图,您需要使用您喜欢的webdriver进行截图,并将其存储在以下文件路径格式中
results/html/assets/screenshots/{{feature_name}}/{{scenario_name}}.png
feature_name 和 scenario_name 变量必须是相关项目名称,不得包含空格。
以下是一个示例,说明FeatureContext方法将生成上述格式的图像文件
/** * @BeforeScenario * * @param BeforeScenarioScope $scope * */ public function setUpTestEnvironment($scope) { $this->currentScenario = $scope->getScenario(); } /** * @AfterStep * * @param AfterStepScope $scope */ public function afterStep($scope) { //if test has failed, and is not an api test, get screenshot if(!$scope->getTestResult()->isPassed()) { //create filename string $featureFolder = preg_replace('/\W/', '', $scope->getFeature()->getTitle()); $scenarioName = $this->currentScenario->getTitle(); $fileName = preg_replace('/\W/', '', $scenarioName) . '.png'; //create screenshots directory if it doesn't exist if (!file_exists('results/html/assets/screenshots/' . $featureFolder)) { mkdir('results/html/assets/screenshots/' . $featureFolder); } //take screenshot and save as the previously defined filename $this->driver->takeScreenshot('results/html/assets/screenshots/' . $featureFolder . '/' . $fileName); // For Selenium2 Driver you can use: // file_put_contents('results/html/assets/screenshots/' . $featureFolder . '/' . $fileName, $this->getSession()->getDriver()->getScreenshot()); } }
注意,currentScenario变量需要在类级别上,并在 @BeforeScenario 方法中生成,因为Behat目前不支持在 @AfterStep 方法中获取当前场景,在那里生成截图
问题提交
当您需要额外支持或发现某些奇怪的事情时,请随时创建一个新的问题。
许可协议和作者
作者:https://github.com/dutchiexl/BehatHtmlFormatterPlugin/contributors