roydude / behat-html-formatter
为 Behat 测试创建 HTML 报告(emuse/behat-html-formatter 的增强版本)
Requires
- php: >=5.3.0
- behat/behat: ~3.0
- twig/twig: ~1.0
This package is not auto-updated.
Last update: 2024-09-20 22:06:52 UTC
README
Behat 3 扩展,用于从测试结果生成 HTML 报告(基于 emuse 的原始版本:https://github.com/dutchiexl/BehatHtmlFormatterPlugin)。我所做的更改仅与 Twig 报告有关(见下文)。
Twig 报告
如何使用?
- 该工具可以通过 composer 轻松安装。
- 在
behat.yml
文件中定义格式化器 - 修改
behat.yml
文件中的设置
安装
先决条件
此扩展需要
- PHP 5.3.x 或更高版本
- Behat 3.x 或更高版本
通过 composer
使用 Composer 是保持测试套件更新的最简单方法。
使用 composer 安装
$ composer require --dev roydude/behat-html-formatter
使用 composer.json
安装
将 BehatHtmlFormatterPlugin 添加到您的 composer.json
中的依赖项列表。
{ "require": { "behat/behat": "3.*@stable", "roydude/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: ... # All your awesome suites come here formatters: html: output_path: %paths.base%/build/html/behat extensions: roydude\BehatHTMLFormatter\BehatHTMLFormatterExtension: name: html renderer: Twig file_name: index print_args: true print_outp: true loop_break: true
配置
- 将
(noreport)
部分作为测试套件名称的一部分,意味着它将不会出现在报告中(对于缓存测试等,这很有用,例如,这对于阅读报告的商业用户来说并不那么有趣)。 output_path
- Behat 将保存 HTML 报告的位置。此路径相对于%paths.base%
,当省略时,将默认设置为相同的路径。renderer
- Behat 将使用的渲染引擎,因此 Behat 应输出哪些报告格式(允许多个报告格式,用逗号分隔)。允许的值包括- Twig 基于 Twig 的新颖且现代的报告格式。
file_name
- (可选)Behat 将使用一个固定的文件名,并在每次构建后覆盖相同的文件。默认情况下,Behat 将使用随机名称创建一个新的 HTML 文件(例如 "renderer name"_"date hour")。print_args
- (可选)如果设置为true
,Behat 将将每个步骤的所有参数添加到报告中。(例如,表格)。print_outp
- (可选)如果设置为true
,Behat 将将每个步骤的输出添加到报告中。(例如,异常)。loop_break
- (可选)如果设置为true
,Behat 将在打印场景大纲时在每次执行后添加一个分隔的换行符。
阻止的测试
要标记测试为跳过,请确保它以 PendingExcpetion 退出。
throw new PendingException ("This scenario is blocked by bug MYPROJ-101");
屏幕截图
可以将屏幕截图嵌入到测试失败中。
目前仅支持 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 = str_replace(' ', '', $scope->getFeature()->getTitle()); $scenarioName = $this->currentScenario->getTitle(); $fileName = str_replace(' ', '', $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); } }
请注意,当前场景变量需要位于类级别,并在 @BeforeScenario 方法中生成,因为 Behat 当前不支持在生成截图的 @AfterStep 方法中获取当前场景。
问题提交
当您需要额外支持或发现某些 奇怪 的事情时,请随时 创建一个新问题。
许可证和作者
作者:https://github.com/roydude/BehatHtmlFormatterPlugin/contributors
待办事项
- 考虑添加跳过和未定义的按钮。
- 简化截图。