SuperAPI AI 工具集

wordpress-testing-qa

测试与质量

查看项目

更新于 10-15 14:17

技能介绍

用途

该技能用于 WordPress 插件与主题的测试与质量保障,覆盖 PHPUnit 集成测试、WP_Mock 单元测试、PHPCS 编码规范检查以及 CI/CD 工作流。资料将其定位为质量保障方案,帮助开发者在插件和主题开发中建立分层测试体系。

主要能力

测试策略与测试金字塔

资料给出 WordPress 测试层级:

  • E2E 测试(Playwright):完整用户工作流、浏览器自动化,约占 10%。
  • 集成测试(PHPUnit + WordPress):数据库操作、钩子交互,约占 30%。
  • 单元测试(WP_Mock):纯逻辑、不依赖 WordPress,约占 60%。

PHPUnit 与 WP_Mock 的选择

使用 PHPUnit(集成测试)的场景:测试数据库操作($wpdb、文章创建、元数据)、测试 WordPress 钩子(动作/过滤器实际触发)、测试模板渲染与输出、测试插件启用/停用逻辑、测试使用真实 WordPress 函数。

使用 WP_Mock(单元测试)的场景:测试纯业务逻辑、测试调用 WordPress 函数但逻辑独立的函数、需要快速执行(无需数据库)、隔离测试无副作用、模拟外部 API 调用。

测试覆盖率目标

  • 新代码:最低 80% 覆盖率。
  • 关键路径:95% 覆盖率(支付处理、身份验证、数据验证)。
  • 遗留代码:逐步改进,优先高风险区域。
  • 公共 API:所有公共方法 100% 覆盖率。

测试优先级与不测试内容

优先测试:安全函数(nonce 验证、清理、能力检查)、数据操作(数据库 CRUD、验证、转换)、业务逻辑(计算、工作流、状态转换)、钩子回调、公共 API(REST 端点、WP-CLI 命令)。

不测试:WordPress 核心函数、第三方库内部、无逻辑的简单 getter/setter、配置文件(theme.json、block.json)。

使用方式

PHPUnit 集成测试设置

第一步,安装依赖:

composer require --dev phpunit/phpunit "^9.6"
composer require --dev yoast/phpunit-polyfills "^2.0"
wp scaffold plugin-tests my-plugin

该命令会生成 tests/bootstrap.php、tests/test-sample.php、phpunit.xml.dist、bin/install-wp-tests.sh。

第二步,安装 WordPress 测试库:

bash bin/install-wp-tests.sh wordpress_test root '' localhost latest

也可指定版本,例如将 latest 换成 6.7。

第三步,配置 phpunit.xml.dist,资料给出了包含 bootstrap、testsuites、coverage、php 常量等节点的完整示例。

测试基类与工厂对象

资料提供 tests/bootstrap.php 示例,通过 tests_add_filter('muplugins_loaded', '_manually_load_plugin') 手动加载被测插件,并启动 WordPress 测试环境。

可用工厂对象包括:$this->factory->post(文章、页面、自定义文章类型)、$this->factory->user(带角色的用户)、$this->factory->term(分类项)、$this->factory->category、$this->factory->tag、$this->factory->comment、$this->factory->blog(多站点博客)。

数据准备与清理

资料给出 setUp()/tearDown()(每个测试方法前后运行)、setUpBeforeClass()/tearDownAfterClass()(整个测试类前后运行一次)的示例,包括注册/注销自定义文章类型、创建/删除测试数据、创建/删除自定义数据表等。

完整插件测试示例

资料提供 tests/test-plugin-functionality.php 示例,覆盖自定义文章类型注册、自定义分类法注册、保存自定义元数据、短代码输出、动作钩子触发、过滤器修改内容等测试。

WP_Mock 单元测试

安装命令:

composer require --dev mockery/mockery "^1.6"
composer require --dev 10up/wp_mock "^1.0"
composer require --dev phpunit/phpunit "^9.6"

资料还给出 tests/bootstrap-wp-mock.php 的开头部分,但内容在资料中未完整提供。

适用场景

  • 为 WordPress 插件编写 PHPUnit 集成测试。
  • 在不加载 WordPress 核心的情况下用 WP_Mock 做单元测试。
  • 用 PHPCS 配合 WPCS 规则集强制编码规范。
  • 在 CI/CD 中运行测试与质量检查。

限制

资料未提供该技能的具体安装方式、运行命令、支持的 WordPress 或 PHP 版本范围、CI/CD 平台配置细节、PHPCS 配置示例的完整内容,以及 WP_Mock 引导文件的完整内容。这些内容暂未提供。