用途
Behat BDD Skill 用于为 PHP 项目生成 Behat 行为驱动开发(BDD)测试。它结合 Gherkin 特性文件与 MinkContext,支持浏览器测试。当用户提到 "Behat"、"PHP BDD"、"Mink" 等关键词时,可使用该技能。
主要能力
特性文件
技能可生成 Gherkin 格式的特性文件,例如 features/login.feature:
Feature: User Login
As a user I want to log in
Scenario: Successful login
Given I am on "/login"
When I fill in "email" with "user@test.com"
And I fill in "password" with "password123"
And I press "Login"
Then I should see "Dashboard"
And I should be on "/dashboard"
Scenario: Invalid credentials
Given I am on "/login"
When I fill in "email" with "wrong@test.com"
And I fill in "password" with "wrong"
And I press "Login"
Then I should see "Invalid credentials"
自定义上下文类
可生成继承 MinkContext 的自定义上下文类,例如 features/bootstrap/LoginContext.php:
<?php
use Behat\MinkExtension\Context\MinkContext;
use Behat\Behat\Context\Context;
class LoginContext extends MinkContext implements Context
{
/**
* @When I login as :email with password :password
*/
public function iLoginAs(string $email, string $password): void
{
$this->visit('/login');
$this->fillField('email', $email);
$this->fillField('password', $password);
$this->pressButton('Login');
}
/**
* @Then I should see the dashboard
*/
public function iShouldSeeTheDashboard(): void
{
$this->assertSession()->addressEquals('/dashboard');
$this->assertSession()->pageTextContains('Welcome');
}
/**
* @Then the response time should be under :ms milliseconds
*/
public function responseUnder(int $ms): void
{
// Custom performance assertion
}
}
内置 MinkContext 步骤
技能列出 MinkContext 提供的内置步骤,包括:
- 导航:
Given I am on "/path"、When I go to "/path"、When I reload the page - 表单:
When I fill in "field" with "value"、When I select "option" from "select"、When I check "checkbox"、When I uncheck "checkbox"、When I press "button"、When I attach the file "path" to "field" - 断言:
Then I should see "text"、Then I should not see "text"、Then I should be on "/path"、Then the response status code should be 200、Then the "field" field should contain "value"、Then I should see an "css-selector" element、Then print current URL
behat.yml 配置
可生成 behat.yml 配置,例如:
default:
suites:
default:
contexts:
- LoginContext
- Behat\MinkExtension\Context\MinkContext
extensions:
Behat\MinkExtension:
base_url: 'http://localhost:3000'
sessions:
default:
selenium2:
browser: chrome
wd_host: 'http://localhost:4444/wd/hub'
标签过滤
支持使用标签运行测试:
./vendor/bin/behat --tags=@smoke
./vendor/bin/behat --tags="@smoke&&~@slow"
安装与初始化
安装命令:
composer require --dev behat/behat behat/mink-extension behat/mink-selenium2-driver
初始化命令:
./vendor/bin/behat --init
云端执行
技能提供在 TestMu AI(LambdaTest)上云端执行的配置示例。需设置环境变量 LT_USERNAME、LT_ACCESS_KEY。
behat.yml 示例:
default:
extensions:
Behat\MinkExtension:
base_url: 'https://your-app.com'
selenium2:
wd_host: 'https://hub.lambdatest.com/wd/hub'
capabilities:
browser: 'chrome'
extra_capabilities:
'LT:Options':
user: '%env(LT_USERNAME)%'
accessKey: '%env(LT_ACCESS_KEY)%'
build: 'Behat Build'
name: 'Behat Test'
platformName: 'Windows 11'
video: true
console: true
network: true
运行命令:
./vendor/bin/behat
./vendor/bin/behat features/login.feature
深度模式参考
技能包含 reference/playbook.md,提供生产级模式,涵盖以下章节:
- §1 项目搭建:behat.yml 包含套件、Mink 扩展、配置文件、项目结构
- §2 特性文件:Gherkin 包含 Scenario Outline、Background、TableNode 数据
- §3 上下文类:步骤定义、依赖注入、API 上下文、断言
- §4 钩子:BeforeSuite/Scenario/Step、失败截图、事务回滚
- §5 页面对象:页面对象模式,包含元素映射、可复用组件
- §6 LambdaTest 集成:远程 Selenium 配置、云浏览器配置文件
- §7 自定义格式化器:HTML 报告格式化器、结果收集
- §8 CI/CD 集成:GitHub Actions 配合 MySQL、Selenium、JUnit 报告
- §9 调试表:12 个常见问题及其原因与修复
- §10 最佳实践:14 项 BDD 测试检查清单
使用方式
当用户提及 Behat、PHP BDD、Mink 等关键词时,技能可生成相应的特性文件、上下文类、behat.yml 配置,并提供安装、初始化、运行及云端执行命令。
适用场景
适用于 PHP 项目的 BDD 测试编写,包括浏览器测试、表单交互、断言验证、标签过滤运行,以及通过 LambdaTest 进行云端跨浏览器测试。
限制
技能资料未提供具体的收费、价格、平台支持范围或效果保证等信息。部分内容(如自定义性能断言)在资料中仅以注释形式出现,未提供完整实现。