fixture 介绍
官网: https://playwright.dev/docs/test-fixtures
作用: 为测试用例提供已封装的能力,如数据库操作,页面操作等
特点: 不同的测试用例之间使用相同fixture,是相互隔离的。如A用例修改了request(内建的fixture,用于做接口测试)中的超时时间,在B用例中沿用fixture定义的超时时间
1. 页面POM的fixture封装
POM定义
// app-list-page.ts
import {
type Page, type Locator, expect } from "@playwright/test";
export class AppListPage {
private readonly searchInput: Locator // 应用列表页搜索框
constructor(public readonly page: Page) {
this.searchInput = this.page.getByPlaceholder('请输入应用名称或包名');
}
/**
* 访问应用列表页(必须先小米账号登录)
*/
async goto() {
await this.page.goto('/distribute');
}
/**
* 校验应用列表页是否存在该应用, 并且应用状态是否为指定状态
* @param packageName 应用包名
* @param status 应用状态
*/
async checkAppListStatus(packageName: string, status: string) {
console.log(`开始检查应用列表中是否存在应用: ${
packageName}`, `应用状态是否为: ${
status}...`);
this.searchInput.fill(packageName);
this.page.getByLabel('图标: search').locator('svg').click();
const visibale = this.page.getByText(`包名:${
packageName}`).isVisible({
timeout: 5000 });
if (visibale) {
console.log(`===>[PASS]应用: ${
packageName} 存在.`);
await expect(this.page.getByRole('cell', {

本文介绍了Playwright中的fixture在测试用例中的应用,包括页面操作(如POM封装)和数据库操作的封装,强调了不同fixture的隔离性和如何在测试中合并fixture以满足复杂场景需求。
最低0.47元/天 解锁文章
2065

被折叠的 条评论
为什么被折叠?



