WEB自动化测试,一定得掌握的8个核心知识点

news2024/10/6 22:20:40

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 编辑

写在前面

使用 cypress 进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用 JavaScript 作为编程语言。

传统主流的 selenium 框架是支持多语言的,大多数 QA 会的 python 和 Java 语言都可以编写 selenium 代码,遇到需要编写 js 代码的 cypress,以为又要学习一门编程语言,慢慢就放弃了。

其实学习 cypress 只需要掌握一些基础语法就够了。

1、变量

在 js 里用 let 这个关键字定义变量,当一行代码结束后,可以用分号 ; 隔开。

浏览器当中都内置了 js 的解释器,上面的代码可以直接在浏览器中运行。按 F12 打开浏览器的开发者工具,点击 console 标签页,就可以输入 js 代码了。

除了浏览器环境,也可以通过 node.js 环境运行代码。我们可以把上面的代码保存到 demo.js 文件中,然后在命令行工具中输入 node 指令运行代码。

2、条件分支

js 的条件分支主要需要注意条件表达式要用括号包裹。

在 js 的条件分支代码中,如果代码逻辑比较简单,经常使用三元运算符简化代码,它的使用方式是通过 ?表示。上面的代码可以改成三元运算符形式:

3、函数 (Function)

定义函数时使用 function 关键字,然后是函数名,括号里填入参数,参数之间用逗号隔开,最后是花括号之间的代码(即“函数体”),函数的返回值使用 return 关键字。

4、箭头函数 (Arrow function)

箭头函数在 js 使用中非常普遍,他能简化普通函数的写法。上面的普通函数改成箭头函数:

5、回调函数(Callback)

在 js 代码编写中,经常需要用到回调函数。它允许我们采用异步方式编程,当执行完一个任务以后,再通过回调触发另外的任务。

在上面的例子中,print 函数允许程序随机等待 5 秒内的时间,再打印字符串,最终触发回调函数。在调用该函数时,可以通过箭头函数指定一个回调函数,比如打印"finished"。

回调函数如果不嵌套调用,是一个非常好的工具。但是一旦嵌套调用,会陷入“回调地狱” 。陷入回调地狱的代码加入 try catch 异常捕获之后,层次非常不清晰,严重影响阅读。

6、Promise

Promise 是在异步编程中替代回调函数的编程方式。我们可以在函数中创建一个 Promise 对象,这个对象需要传递一个函数作为参数,通常可以写成箭头函数的形式。

箭头函数有两个特定参数 resolve 和 reject,resolve 负责把程序的正常结果返回出去, reject 负责程序出现异常时,把异常情况返回出去。

 

7、Async / Await

Promise 比普通回调函数的方式更容易编写,但是也涉及到 resolve,reject 和 then 等很多概念,如果 then 很多,代码也不好看。

Async/Await 是以更舒适的方式使用 promise 的一种特殊语法,同时它也非常易于理解和使用。我们只需要在普通函数前面加上 async 关键字,那么这个函数的返回值将是一个 promise 对象。

虽然函数在定义的时候确定了返回值是 8,但是当调用 print 函数时,得到的是一个 Promise, 而不是 8 。如果需要获取到其中返回值,可以通过 then 方法:

如果觉得 then 写法不喜欢,可以换成 await 获取返回值:

之前的回调函数例子可以改写成 async / await 的形式:

8、mocha & chai

当编写完一些 js 代码之后,你需要对这些代码进行测试,保证代码能按预期执行,并得到预期结果。

而 mocha 是一个非常出色的 js 单元测试框架,chai 专门处理断言。需要使用这两个框架时,先通过 npm 安装:

接着就可以写用例了,用例最好写到以 test 命名的目录中,每一个 js 文件就是一个规范(spec),它表示被测试的函数应该是怎样的。

在这个规范文件中,包含了对功能的描述(describe)和测试用例(it)以及断言情况(assert)。编写好测试代码后,进入文件目录,在命令行通过 npx mocha 运行。

正如你所看到的,一个规范包含 3 个部分:

01:describe

表示我们正在描述的功能是什么。在我们的例子中我们正在描述函数 pow。描述的作用是组织测试用例(it),在一个描述中,通常会包含多个 it 用例。

02:it

需要执行的用例,第二个参数是用于测试 pow 函数的代码,通常来说是一个函数。

03:assert

断言,表示测试的结果是否符合预期。

cypress 框架 对 mocha 进行了集成,编写测试代码用的正是 mocha 的表示方法,所以学好 mocha, cypress 就学会了一半。

下面这个例子就是 cypress 执行浏览器测试的代码,可以看出,和 mocha 没有区别,只是在 cypress 中,不能直接使用 assert 这种显性断言方式。

9、总结

要进行浏览器端的自动化测试,掌握核心的 js 用法是必不可少的,本文提到的 8 个知识点,都会频繁用到。

  • 通过 let 关键字命名变量。
  • 通过 if 和三元表达式控制条件。
  • 普通的 function 形式函数定义。
  • 箭头函数也经常使用,有点类似匿名函数。
  • 回调函数在 js 当中非常常见,但是会遇到回调地域的问题。
  • Promise 是解决回调地狱的有效手段,promise 和 then 的用法会经常碰到。
  • Async / Await 是另一种更优雅的使用 promise 的方式,更推荐使用。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

全套资料获取方式 :

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

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

相关文章

Android逆向之雷速体育(360加固)

本教程仅限于学术探讨,也没有专门针对某个网站而编写,禁止用于非法用途、商业活动等,否则后果自负。如有侵权,请告知删除,谢谢! 目录 一、攻克难点 二、分析接口 三、结束 一、攻克难点 本期app难点&am…

2023远程控制软件排行榜

对远程控制软件的排名可能是主观的,因为它取决于个人的需求和偏好。 但是,这里列出了因其功能和性能而广受认可的流行远程控制软件: TeamViewer TeamViewer 是一款成熟的远程控制软件,以其易用性和广泛的功能而闻名。 它支持远程…

君子签电子签章助推企业实现印章“集中统一管控”和“分级分权管理”

对于中大型企业来说,印章管理一直以来都是个“老大难”问题。 在中大型企业,印章数量多,大多分散在各个分/子公司的各个部门,企业印章无法统一进行有效管理。印章分散各地,异地分/子公司跨区域盖章难;分/子…

java servlet 二手物品交易平台Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java servlet 二手物品交易平台是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助 系统采用 serlvetdaobean 模式开发 ,系统具有完整的源代码和数据 库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,My…

Allure在本地不安装allure服务的情况下打开Allure Html报告

前言 我们使用pytestallure生成Allure测试报告后,需要发给领导查看报告的详细信息。此时我们通过将allure生成的html报告压缩成压缩包后发送给领导,但是领导电脑由于没有安装Allure服务,打开会全部显示“Loading”, 无法查看到报…

信创办公–基于WPS的PPT最佳实践系列 (插入表格或图标)

信创办公–基于WPS的PPT最佳实践系列 (插入图表或图标) 目录 项目背景操作步骤1、插入表格2、实现放映功能 项目背景 当表格数据过大时,将其复制粘贴到PPT上时会显得插入的表格内容小、拥挤,使PPT看起来不美观。这个问题我们可以…

《微服务实战》 第十七章 Redis下载与安装

前言 Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilippo 使用 C 语言编写。 与 SQL 型数据库截然不同,Redis 没有提供新建数据库的操作,因为它自带了 16 (0—15)个数据库(默…

牛客 BM76 正则表达式匹配 【动态规划】

描述 请实现一个函数用来匹配包括.和*的正则表达式。 1.模式中的字符.表示任意一个字符 2.模式中的字符*表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"…

可算是熬出头了,测试6年,费时8个月,入职阿里,涨薪14K

前言 你的努力,终将成就无可替代的自己。 本科毕业后就一直从事测试的工作,和多数人一样,最开始从事点点点的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。 一年半…

GPT_academic详细使用介绍与配置—可润色,翻译,解释代码(GPT助力学术,借助New Bing可实现免费使用)

🥑 Welcome to Aedream同学 s blog! 🥑 文章目录 绪论进入项目地址下载并解压到本地配置python3.11版本的虚拟环境安装运行所需的依赖库配置config配置代理文件配置GPT的api(可选,按token计费)配置NewBing的cookie&…

课程表 II:拓扑i排序

Problem: 210. 课程表 II 文章目录 思路解题方法1:首先新建一个inDegree数组用来存放所有的点的入度:int[] inDegree new int[numCourses];2:然后遍历所有子数组将所有点及其入度存进去,这道题就是课程号本身为坐标,对…

ASEMI代理长电可控硅PCR606:性能特点与应用领域

编辑-Z 可控硅(Thyristor)是一种半导体器件,具有高功率、高效率、高可靠性等优点。PCR606是一款常用的可控硅型号,广泛应用于各种电子设备中。本文将详细介绍PCR606的性能特点、工作原理以及在各个领域的应用。 一、PCR606性能特…

【算法学习系列】06 - 利用二分法查找有序数组中的某个数 num

文章目录 二分法说明实现 二分法验证实现暴力算法对数器使用验证结果 二分法 说明 二分法是一种常用的算法,也称为折半查找或二分查找。它适用于已经有序的数组中,通过将数组从中间划分成两个部分,每次根据目标值与中间值的大小比较来确定下…

基于InVEST模型的人类活动、重大工程生态成效评估、论文写作

查看原文>>>基于生态系统服务(InVEST模型)的人类活动、重大工程生态成效评估、论文写作 【学习目标】: 1) 采用InVEST模型,掌握产水(包括水源涵养)、碳存储(包括固碳)、土…

2023年最新苹果账号更改/注册为美区账号及免国外支付购买和充值美区App Store礼品卡教程

平时大家在使用IPhone手机时,应该有遇到软件明明是在App Store里上架的,但自己无论如何也搜索不到的情况吧!这种就是因为应用没有上架到你苹果账号所在的国家地区才导致的搜不到无法下载。比如:部分的新闻类、代[过滤]理类、游戏类应用以及Chat GPT等都无法在国区账号中搜索…

基于GPS+IMU的卡尔曼滤波融合定位算法MATLAB代码

资源地址: 基于GPSIMU的卡尔曼滤波融合定位算法MATLAB代码资源-CSDN文库 主要内容: 基于GPSIMU的卡尔曼滤波融合定位算法仿真,其中惯导用来进行状态预测,GPS用来滤波矫正,用于GPSIMU的卡尔曼滤波融合定位算法算法编程学习!&…

如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用

在现代应用程序开发和部署中,容器化技术已经成为一种常见的选择。Docker 容器的优势在于其轻量级、可移植性和可扩展性,但在更新容器时可能会面临停机时间的问题。本文将详细介绍如何以零停机时间或最少停机时间更新 Docker 容器,以确保应用程…

RedisTemplate

jedis是redis官网推荐的一个面向java客服端,库文件实现了对各类API进行封装调用。 lettuce是一个redis的驱动包,Lettuce译为生菜。 jedis和lettuce都是redis的客户端,他们可以连接redis服务器.但是在springbot2.0以后都是使用的Lettuce客户…

ImageCombiner是一个专门用于Java服务端图片合成的工具

1.1 项目背景 最近公司上了不少传播方面的需求,免不了合成各种营销图片,图片合成本身并不是什么高深的技术,但用底层api去搞确实繁琐,于是抽时间封装了一个小工具,初衷是解放生产力,后来发现挺好使&#x…

Unity之OpenXR+XR Interaction Toolkit实现 VR控制第一人称角色模型动画

前言 我们在开发VR项目时,有时会有第一人称视角的需求,即我们自己带上VR头显,能够看到自己的身体,如果模拟一些人物触电死亡,使用工具动画之类的需求,那么VR控制第一人称视角就比较实用了。 我们今天就来介绍一下如何实现VR设备控制第一人称: 1.角色手部跟随手柄移动和…