SuperAPI AI 工具集

behat-skill

测试与质量

查看项目

更新于 10-15 14:31

技能介绍

用途

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 进行云端跨浏览器测试。

限制

技能资料未提供具体的收费、价格、平台支持范围或效果保证等信息。部分内容(如自定义性能断言)在资料中仅以注释形式出现,未提供完整实现。