You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何声明一次测试用例并实现多次复用?

复用Playwright测试用例实现多工作流测试(无需自定义Fixtures/Page Objects)

完全可以实现,核心思路是把通用测试逻辑封装成独立的异步函数,而非直接用test()定义测试用例。这样就能在不同的工作流测试块里灵活导入、组合调用,同时不需要依赖自定义fixtures或page objects。

第一步:封装通用测试逻辑库

把每个通用测试用例的步骤封装成接收page参数的异步函数,保留test.step来维持测试报告的可读性:

// library.js
const { test } = require('@playwright/test');

// 封装Test1的执行逻辑
export const runTest1 = async (page) => {
  await test.step('Test1 - 步骤1', async () => {
    // 这里写具体操作,比如 await page.click('#btn-login');
  });
  await test.step('Test1 - 步骤2', async () => {
    // 执行对应操作
  });
  await test.step('Test1 - 步骤3', async () => {
    // 执行对应操作
  });
};

// 封装Test2的执行逻辑
export const runTest2 = async (page) => {
  await test.step('Test2 - 步骤1', async () => {
    // 执行对应操作
  });
  await test.step('Test2 - 步骤2', async () => {
    // 执行对应操作
  });
};

// 封装Test3的执行逻辑
export const runTest3 = async (page) => {
  await test.step('Test3 - 步骤1', async () => {
    // 执行对应操作
  });
  await test.step('Test3 - 步骤2', async () => {
    // 执行对应操作
  });
  await test.step('Test3 - 步骤3', async () => {
    // 执行对应操作
  });
  await test.step('Test3 - 步骤4', async () => {
    // 执行对应操作
  });
};

第二步:在工作流中导入并组合调用

在具体的工作流测试文件里,导入封装好的函数,在自己控制的测试上下文中调用,按需组合不同的测试逻辑:

// workflow.js
const { test } = require('@playwright/test');
const { runTest1, runTest3 } = require('./library');

test.describe.serial('工作流1:依次执行Test1和Test3', () => {
  let page;

  test.beforeAll(async ({ browser }) => {
    page = await browser.newPage();
    await page.goto('/'); // 使用配置文件中定义的baseURL
  });

  // 单独执行Test1
  test('执行Test1', async () => {
    await runTest1(page);
  });

  // 单独执行Test3
  test('执行Test3', async () => {
    await runTest3(page);
  });

  // 也可以把多个测试逻辑合并到一个测试用例中执行
  test('一次性执行Test1 + Test3', async () => {
    await runTest1(page);
    await runTest3(page);
  });
});

为什么这种方式可行?

  • 避免了直接导出test()定义的测试用例导致的重复注册问题
  • 完全由你控制测试上下文(比如page实例),确保工作流中的上下文一致
  • 保留了Playwright的test.step特性,测试报告里会清晰展示每个步骤的执行情况
  • 无需额外依赖,逻辑简洁直接,可灵活组合任意数量的通用测试逻辑

内容的提问来源于stack exchange,提问作者Clarius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:45:55