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_04dotnet 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】,邀你加入技术交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS 10.7拆分多部件要素(Multipart Features)至单部件要素的两种方法

GIS中经常会出现多部件要素的现象,为了便于检查拓扑等关系,需要将其拆分为单个的部件。例如,在用同一个图层的多个图斑去裁剪(Clip)时,或者将多个不相邻的图斑进行合并(merge)时,可能会产生多部件要素,本文演示ArcGIS10.7版本中常见的两种拆分多部件要素至单部件要素…

spring-session + redis 实现集群 session 共享

2019独角兽企业重金招聘Python工程师标准>>> 目前市面上实现session共享的方案有很多,其中比较常用的是使用Tomcat、Jetty等web服务器提供的session共享功能,以此将session内容统一存放在数据库(如mysql)或者缓存&…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…

业务流水号规则生成组件

对于很多业务系统都需要生成业务流水号,如果订单号、购采单号等等;而这些业务流水号并不是简单的一个增长数值,它们很多时候都有一些不同的规则来定义,如不同类型的字母或地区拼音简写等。为了更灵活生成这些有规则的业务流水号Be…

ArcGIS中国工具(ArcGISCTools)3.2 安装教程(附安装包下载)

ArcGIS中国工具,简称CTools,集成在ArcGIS 10.x系列版本中。本文在ArcGIS10.7的基础之上,演示3.2版本安装过程,并提供下载地址共大家学习和交流。 一、安装过程

阿里云ECS,搭建MySQL5.7数据库环境

为什么80%的码农都做不了架构师?>>> 配置mysql yum源 [rootiZbp1j6oiamq7t2otpryarZ ~]# cd /data/ [rootiZbp1j6oiamq7t2otpryarZ data]# ll total 0###################################下载mysql源安装包# [rootiZbp1j6oiamq7t2otpryarZ data]# wge…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(9)集万家之长不死 python

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…

【重磅】ArcGIS 10.8手把手经典图文安装教程(附安装包全套装下载,亲测可用)

ArcMap时代的最后一版软件,未来官方对ArcMap的支持将仅限于提供补丁,更新和新环境支持,换句话说ArcMap10.8.X将会是最终版本,以后不会再有ArcMap10.9了,官方建议所有人在完成工作流程后立即迁移到ArcGIS Pro。 时间真快,ArcGIS 10.7刚装完没几天,作为GISer的我,有的开始…

聊聊 C# 中的 Visitor 模式

前言 Visitor模式在日常工作中出场比较少,如果统计大家不熟悉的模式,那么它榜上有名的可能性非常大。使用频率少,再加上很多文章提到Visitor模式都着重于它克服语言单分派的特点上面,而对何时应该使用这个模式及这个模式是怎么一…

AcWing 889. 满足条件的01序列(卡特兰数应用)

满足条件的01序列 假设长度为n个序列要求满足题意1的前缀0的个数不能超过1的个数 将问题抽象为从(0, 0)到(n, n) 向上走一个代表这一步对应序列中的值是1,向右走代表序列中的值是0 要想满足1的前缀0的数量大于1的数量就需要满足所有路过的途径在y x这个函数个下面…

添加ASP.NET网站资源文件夹

ASP.NET应用程序包含7个默认文件夹,分别为Bin、APP_Code、App_GlobalResources、App_LocalResources、App_WebReferences、App_Browsers和“主题”文件夹。每个文件夹都存放ASP.NET应用程序的不同类型的资源。 方法 说明Bin  包含程序所需的所有已编译程序集&#…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…

Microsoft SQL Server 2019开发版安装配置教程

一、安装cn_sql_server_2019_developer_x64 双击setup.exe进行安转。 点击【安装】。 点击【全新SQL Server独立按住啊或向现有安装添加功能】。 点击【下一步】。

《看聊天记录都学不会C#?太菜了吧》(4)C# 中的尚方宝剑 “先斩后奏”

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…

如何用 Swift 语言构建一个自定控件

本文译自:How To Make a Custom Control in Swift 用户界面控件是所有应用程序重要的组成部分之一。它们以图形组件的方式呈现给用户,用户可以通过它们与应用程序进行交互。苹果提供了一套控件,例如 UITextField,UIButton&#xf…

《看聊天记录都学不会C#?太菜了吧》(5)C# 中可以用中文名变量?

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…

【ArcGIS遇上Python】ArcGIS Python中文编码问题案例详解

前面的文章《ArcGIS Python获取Shapefile矢量数据字段名称》我们已经学会了如何用 Python 获取中文路径下的shp数据的所有字段,英文没有问题,但是如果你输出中文路径下的数据字段, 就有可能会碰到中文编码问题。 Python 文件中如果未指定编码,在执行过程会出现报错: impo…

gRPC编码初探(java)

背景:gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、…

WPF 基础控件之 RadioButton 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.ProgressBarRadioButton 实现下面的效果1)RadioButton来实现动画;Border嵌套 Ellipse并设置Sca…

《看聊天记录都学不会C#?太菜了吧》(6)多晦涩的专业术语原来都会那么简单

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。 若…