利用Playwright进行API测试 - TestGrid

作者:API传播员 · 2026-01-19 · 阅读时间:6分钟

自动化测试中的优势。


API 基础知识 – CRUD 操作

在 API 测试中,CRUD(创建、读取、更新、删除)操作是软件应用程序的基础功能。测试这些操作是任何自动化测试框架的重要组成部分。

创建操作

创建操作用于在服务器上新增资源。以下是测试创建操作时需要关注的关键点:

  • 使用 POSTPUT 方法添加实体。
  • 参数化 ID、名称、状态码等值,以验证不同组合。
  • 使用断言检查响应数据是否正确。
  • 测试各种输入组合和边界值。

读取操作

读取操作通过 GET 方法从服务器提取现有数据。以下是测试读取操作的关键点:

  • 检查分页和过滤器的响应。
  • 验证响应中是否包含预期字段。
  • 测试参数为 null 或无效时的响应。
  • 确保响应结构符合 API 文档。

更新操作

更新操作使用 PATCHPUT 方法修改服务器上的资源。以下是测试更新操作的关键点:

  • 通过 JSON 请求体发送更新字段。
  • 验证更新是否正确反映在响应中。
  • 检查状态码和响应消息是否符合预期。
  • 测试必填字段为空时的响应。
  • 参数化脚本以提高复用性。
  • 测试嵌套 API 的更新逻辑。

删除操作

删除操作通过 DELETE 方法移除服务器上的资源。以下是测试删除操作的关键点:

  • 验证删除后返回的状态码是否为 404401
  • 测试删除无效 ID 的情况。
  • 验证已删除条目的恢复功能。
  • 参数化删除操作以提高脚本的可复用性。

通过全面覆盖 CRUD 操作的测试案例,可以为应用程序建立坚实的基础。此外,自动化测试框架能够提高测试覆盖率和脚本的可复用性。


使用 Playwright 进行 API 测试的好处

虽然 Playwright 通常用于浏览器自动化和 UI 测试,但它也非常适合用于 API 测试的一些优势:

  • 语法简单且熟悉:Playwright 的命令与浏览器自动化一致,易于上手。
  • 内置断言:可以直接验证响应状态、头部信息、响应体和结构。
  • UI 和 API 测试的无缝集成:在一个框架中同时管理 UI 和 API 测试。
  • 状态管理:支持存储和处理 Cookie 及凭据,保持执行状态。
  • 身份验证支持:支持基本身份验证和承载令牌等机制。
  • 测试挂钩:可模拟特定 API 行为。
  • 框架扩展性:便于扩展现有框架以容纳更多测试。

编写 Playwright API 测试的先决条件

在开始编写 Playwright API 测试之前,请确保以下工具已安装:

  • Node.js 和 NPM:用于运行 Playwright。
  • 代码编辑器:如 VS Code。
  • API 文档:测试所需的 API 文件。
  • 辅助包:如 faker-js(生成测试数据)和 rimraf(清理文件夹)。

接下来,我们将通过实例展示如何编写 API 测试。


编写 Playwright API 测试

设置环境

  1. 创建测试目录:

    mkdir playwright-tests
  2. 打开 VS Code 并加载上述目录。

  3. 安装 Playwright:

    npm init playwright@latest
  4. 安装辅助包:

    npm install --save-dev @faker-js/faker rimraf

    安装完成后,项目结构中会新增 node_modules 文件夹。

  5. 修改配置文件:注释掉除一个浏览器外的其他浏览器,并添加基本 URL。配置文件示例如下:

    module.exports = defineConfig({
       testDir: './tests',
       fullyParallel: true,
       retries: process.env.CI ? 2 : 0,
       use: {
           baseURL: 'https://bookstore.toolsqa.com',
           trace: 'on-first-retry',
       },
       projects: [
           { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
       ],
    });

编写测试用例

用户注册

以下代码展示了如何使用 POST 方法注册新用户:

const { test, expect } = require('@playwright/test');

test('用户注册', async ({ request }) => {
    const response = await request.post('/Account/v1/User', {
        data: { "username": "test_user", "password": "Test@1234" }
    });
    console.log(await response.json());
});

运行测试:

npx playwright test register_user.spec.js

生成令牌

以下代码展示了如何生成用户令牌:

const { test, expect } = require('@playwright/test');

test('生成令牌', async ({ request }) => {
    const response = await request.post('/Account/v1/GenerateToken', {
        data: { "username": "test_user", "password": "Test@1234" }
    });
    console.log(await response.json());
    expect(response.status()).toBe(200);
    const resBody = await response.json();
    expect(resBody).toHaveProperty('result', 'User authorized successfully');
});

运行测试:

npx playwright test generate_token.spec.js

获取书籍列表

以下代码展示了如何使用 GET 方法获取书籍列表:

const { test, expect } = require('@playwright/test');

test('获取书籍列表', async ({ request }) => {
    const response = await request.get('/BookStore/v1/Books');
    console.log(await response.json());
    expect(response.status()).toBe(200);
});

运行测试:

npx playwright test book_list.spec.js

结论

本文介绍了 API 的稳定性和可靠性。此外,Playwright 提供了一个统一的框架,将 API 测试与 UI 测试结合在一起,简化了测试流程并提高了效率。

原文链接: https://testgrid.io/blog/playwright-api-testing/