Hello Playwright:(4)自动化测试

利用 Playwright 提供的 API,我们在浏览器上做的很多事情都可以自动化。例如,搜索数据、填写表单和下载文件等等。

但最适合的工作,就是自动化测试 Web 应用程序。

自动化测试

测试是软件开发中的一项基本任务,至少,你需要运行应用程序以查看它是否按预期工作。

但是要真正测试一个功能是否正常,需要要覆盖尽可能多的场景。例如,填写一个表单,你就必须要验证如下常见的场景:

  • 完全正确的数据

  • 错误的数据类型,比如数字框输入了字母

  • 错误的数据范围,比如年龄输入了1000

  • 必填字段为空

虽然可以用纯手工进行测试。但是有经验的开发人员会基于这些场景编写测试代码,并且可以自动化运行这些测试代码,保证不会遗漏任何场景或必须重复执行相同的测试。

而测试 Web 应用程序需要使用浏览器,这正给了 Playwright 以用武之地。

测试框架

虽然 Playwright for .NET 不依赖于特定的测试运行程序或测试框架就可运行,但是利用测试框架可以帮助我们更好地编写自动化测试。

.NET 下的测试框架有很多。但是官方推荐使用 NUnit 作为测试框架。你也可以尝试使用其他你熟悉的测试框架。

Demo

下面我们将将使用站点 https://www.baidu.com 作为测试用例,测试页面标题是否为“百度一下,你就知道”。

在命令行窗口,使用 dotnet CLI 创建一个 NUnit 测试项目,并添加 Playwright 依赖:

dotnet new nunit -n HelloPlaywright_04
cd HelloPlaywright_04
 
dotnet add package Microsoft.Playwright.NUnit

修改 UnitTest1.cs 代码如下:

using Microsoft.Playwright.NUnit;
using NUnit.Framework;
using System.Threading.Tasks;

namespace HelloPlaywright_04
{
    public class Tests : PageTest
    {
        [Test]
        public async Task Title_IsCorrect()
        {
            var result = await Page.TitleAsync();
            Assert.AreEqual("百度一下,你就知道", result);
        }
    }
}

运行测试,失败

67b89189f7f62c2c8be822daadae1489.png

但是这是对的,因为我们还没有初始化环境:

namespace HelloPlaywright_04
{
    public class Tests : PageTest
    {
        [SetUp]
        public async Task SetUp()
        {
            await Page.GotoAsync("https://www.baidu.com");
        }

        ...
    }
}

运行测试,成功

39eb88a964cfb0513352fcd3edc9f60a.png

结论

Microsoft.Playwright.NUnit 提供了多个基类用于创建不同级别下的测试:

类名说明
PageTest每个测试都会获得在其自己独有的 BrowserContext 中创建的网页的新副本。扩展此类是编写全功能 Playwright 测试的最简单方法。
ContextTest每个测试都会得到一个 BrowserContext 的新副本。你可以根据需要在此上下文中创建任意数量的页面。使用此测试是测试需要多个选项卡的多页场景的最简单方法。
BrowserTest每个测试都将获得一个浏览器,并且可以创建任意数量的上下文。每个测试负责清理它创建的所有上下文。
PlaywrightTest为每个测试提供了一个 Playwright 对象,以便测试可以启动和停止任意数量的浏览器。

添加微信号【MyIO666】,邀你加入技术交流群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值