「自动化测试」playwright中 expect 断言搭配 await 的使用事项

判断 await 是否需要添加到 expect 前

expect 第一个参数建议两种用法,第一种是传递 locator ,第二种是传递基础数据类型值

除了前面两个用法还可以传递( PageAPIResponse ),但是暂时用不上,建议先优先以前两种用法为主

awaitexpect 中的使用

第一种,传递了 locator 的情况

此时 expect 返回的对象会附加 playwright 的拓展方法 ExtraLocatorMatchers ,可以使用 Assertions上的拓展方法,并且返回的是 Promise 对象,故需要在前加上 await 来配合使用

// 此处 toBeVisible 返回的是 Promise 需配合 await 使用
public async assertLoginFail () {
    await expect(this.page.locator('.error-msg'), '账号或密码输入错误,对应错误提示没有被正常展示').toBeVisible();
}

第二种,传递了 基础数值 的情况

此时 expect 返回的对象基本含有 jest 的方法,不含 playwright 拓展的方法,并且返回的基本都是 void ,所以一般不需要在前加上 await 来使用

// 从响应正文的 JSON 中获取 code
const { code } = await Response.json();
// 此处 toBe 无返回值,所以不需要加 await 使用
expect(code, '告警详情数据请求失败').toBe(0);

注意

在值断言中,expect第一个参数可以接受Promise与非 Promise对象的数值,对于传递的Promise对象,会自动等待其状态变换后的结果进行判断,但是为了避免 Promise 等待状态变换的过程中,expect等待超时,导致结果误判,进而影响测试结果,所以建议统一将 Promise 提出,在外等待其结果返回后再进行断言

// expect 对于数值的判断(错误的做法)
expect(customerCountLocator.innerText(), '客户数不能为0').not.toBe('0');

// 正确的做法
const customerCountInnerText = await customerCountLocator.innerText();
expect(customerCountInnerText, '客户数不能为0').not.toBe('0');
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值