简介:Playwright
测试夹具(fixture
)是一项非常强大的功能,在测试上下文环境准备,测试逻辑简化,代码重用,代码维护等方面提供了便利。本文结合自动化测试中最常见的登录场景介绍了自定义夹具的具体使用。
1. fixture
测试夹具介绍
在Playwright
中,系统内置已经预定了很多核心夹具(fixture
),如page
、context
、browser
,让你在不同的测试用例中使用。这些夹具具备高度的模块化封装,从而大大简化了使用,尤其是一些setup
和。它们将功能封装到模块化模块中,从而简化了测试设置和拆卸。
下面的例子,该参数告诉 Playwright Test
设置夹具并将其提供给您的测试函数。{ page }page
import { test, expect } from "@playwright/test";
test("basic test", async ({ page }) => {
await page.goto("https://playwright.dev/");
await expect(page).toHaveTitle(/Playwright/);
});
夹具 | 类型 | 描述 |
page | 页 | 此测试运行的独立页面。 |
context | 浏览器上下文 | 此测试运行的隔离上下文。夹具也属于这种情况。 |
browser | 浏览器 | 浏览器在测试之间共享,以优化资源。 |
browserName | 字符串 | 当前运行测试的浏览器的名称 |
request | APIRequestContext | 此测试运行的独立 APIRequestContext 实例。 |
自定义fixture
测试夹具
除了使用Playwright
系统自带的fixture
外,更灵活的方式是利用自定义功能
web
登录,是测试中最常见,最基础的场景,几乎每条测试用例都需要首先完成系统登录,鉴权成功之后,才进行后续操作。把登录相关的功能逻辑,封装到一个定制化夹具,成为一个典型场景。好处就是,提高了代码的复用性和可维护性。
扩展测试对象
首先,创建一个新的测试文件或使用现有的测试文件。在这里,我们将使用 Playwright
测试 Web
应用程序、访问环境变量并执行 UI
交互。
若要创建自定义夹具,请扩展 Playwright
提供的测试对象
//fixture.js
import { test as baseTest } from "@playwright/test";
const test = baseTest.extend({
webApp: async ({ page }, use) => {
console.log("setup"); // 系统环境准备,setup等,如:app登录逻辑
await use(page);
console.log("teardown"); // 系统环境清理,teardown等
},
});
使用自定义夹具
定义夹具后,可以在测试中使用它。将标准测试替换为扩展版本:
test("My webApp test", async ({ webApp }) => {
// 代码使用 fixture部分
});
webApp
夹具封装了登录逻辑,使任何需要它的测试都可以访问它。
调试和验证
调试对于确保夹具按预期工作至关重要。Playwright
的检查器在这里非常宝贵,允许逐步完成测试执行并验证设置和拆卸过程。
跨测试共享
要在不同的测试文件中共享您的自定义夹具,请将其封装在单独的模块中:
// setup.js
import { test as baseTest, expect } from "@playwright/test";
export const test = baseTest.extend({
/* Your fixture definition */
});
export { expect };
然后,在测试文件中,导入以下扩展测试:
import { test, expect } from './setup';
这种方法使测试保持简洁和集中,并将共享逻辑抽象到固定装置中。
结论
Playwright
中的自定义测试夹具简化了测试设置和拆卸,促进了代码重用并减少了样板。通过将常用功能(如用户登录)封装到夹具中,可以确保测试更干净、更易于维护且更易于阅读。
暂无评论内容