使用Taiko + Gauge举行自动化测试(一)
Redis 中的过期元素是如何被处理的?视频+图文版给你答案——面试突击 002 期
初识Taiko
先来相识一下什么是Taiko:“Taiko是一个免费的开源浏览器自动化东西,由ThoughtWorks开发。它是一个node的库,Taiko运用Chrome Devtools API,它是为测试当代web运用程序而构建的。”
所以关于Taiko来讲: 1、它是为测试Web运用而生 2、它基于Chrome浏览器
关于Taiko简介中所提到的ThoughtWorks,假如有不相识的同砚能够跳转(开发团队大概也将成为您框架选型评价的决议计划项)。
环境装置
在装置Taiko之前,请确保您已装置了NodeJs环境。假如您还没有装置nodejs,请跳转至 举行装置。
关于开发东西,这里猛烈推荐您运用 VS Code(超强开发东西之一,不做诠释)。若您还未装置VS Code,请跳转至举行下载装置。
在确保装置完成前两项基本支撑环境以后,我们就须要来装置Taiko了。
能够在桌面新建一个文件夹,比方“Taiko Demo”。翻开 VS Code,点击左上角的“文件”,挑选“翻开文件夹”,而且挑选适才建立的文件。
在VS Code中翻开“终端”。终端是VS Code 对敕令控制台的集成,比方CMD,Powershell等,能够让您不脱离IDE就完成一系列操纵。 挑选VS Code上方的 “终端”,挑选“新建终端”,固然您也能够运用快捷键(ctrl + shift + `)。
新建完成后,您将看到如许的窗口。(后续的操纵将频仍用到此操纵,请举行熟习)。
接下来,在终端输入该敕令:
npm install -g taiko
该内容为向全局环境装置taiko Node包。装置时间大概会有点久,因为taiko内里内置了一个100MB+的Chromium浏览器。
尝试Taiko
在终端输入 taiko
,就可以够进入taiko的敕令控制台。
假如您在VS Code终端获得毛病提醒:"因为在此体系上制止运转剧本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。" 请运用该要领举行处置惩罚:。
进入taiko后您将获得如许的显现:
Version: 1.0.4 (Chromium:81.0.3994.0)
Type .api for help and .exit to quit
>
接下来输入 openBrowser()
,您将看到taiko会开启一个浏览器。 然后实行 goto("baidu.com")
,浏览器将跳转到百度首页。然后再次实行 write("博客园 句幽")
,浏览器将在输入框内添补关于的内容。末了实行click("百度一下")
,将模仿操纵点击一下搜刮。
接下来输入 .code
,您将看到适才操纵步骤的代码。 这是taiko为您自动生成的。
在VS Code中新建文件“first-case.js”。然后将适才taiko为我们生成的代码拷贝下来,复制到文件中。
此时该文件中的内容就相当于完成了我们第一个Case: “翻开浏览器,输入内容,点击搜刮”。
taiko 实行历程
那末如今您大概会问,taiko是怎样实行的呢? 假如我要扩大一个用例该怎样扩大呢?
先来看看我们最入手下手输入的几个敕令: openBrowser
、goto
、write
、click
。 这些都是taiko为我们供应的内置敕令。
也就是说 taiko 实在就是为我们供应了这些基于浏览器的基本操纵指令,而我们就可以够用这些种种敕令举行排列组合,完成对应的操纵。比方 “点击”、“按压”、“输入”、“挑选元素”等等操纵,而这些一切的操纵敕令都在 为我们标注出来了。我们只须要拔取须要的敕令举行操纵就可以够了。
比方我们变动一下操纵:
await openBrowser();
await goto("baidu.com");
await write("句幽 博客园");
await link('句幽- 博客园').exists();
await click(link('句幽- 博客园'));
如许将会在百度搜刮句幽的博客园,然后在点击跳转到句幽的博客园。
而这每个步骤都将会有一个考证,比方await link('句幽- 博客园').exists();
,假如该页面没有获取到称号为"句幽- 博客园"的元素,将会考证失利。
而将这些步骤都转换为js代码,安排在我们的first-demo.js
文件中,然后在终端运转:
taiko first-demo.js
您将看到如许的效果:
[PASS] Browser opened
[PASS] Navigated to URL http://baidu.com
[PASS] Wrote taiko test automation into the focused element.
[PASS] Clicked element matching text "百度一下" 1 times
[PASS] Browser closed
胜利和失利都能够直观的显现。 这些用例步骤安排到对应的文件中,末了再运转就可以够获得测试效果啦。
连系Gauge编写用例
如今我们已相识到了 taiko 是怎样运用的,它供应了各种操纵浏览器的敕令,供我们排列组合完成模仿操纵,终究获得自动化测试效果。
那末您以为它够简朴吗?假如要和团队一同保护和编辑用例,它很轻易吗? 明显不太好用。
所以现在我们将引见别的的一个东西:Gauge。 它将以 taiko 供应的敕令操纵为基本,用更天然的操纵体式格局来完成对应的操纵。
在vs code的终端中输入如许的敕令:
npm install -g @getgauge/cli
运转完成以后就完成了Gauge的装置。固然在Gauge的官网,它还供应了一个。 以何种体式格局装置取决于你,不过此处我猛烈建议您运用 npm的装置体式格局。
Gauge还供应了vs code的扩大支撑,您能够在VS Code的扩大中(最左边按钮)举行装置。
接着,在桌面新建一个文件夹gauge-demo
,然后在vscode中翻开。
在终端中输入:
gauge init js
运转完成后,将会获得Gauge的初始化项目。(vs code的扩大也供应了建立的敕令,不过因为兼容问题常常会涌现耽误,所以我建议您运用敕令来初始化项目)。
初始化以后的项目如图。
运用Gauge
在运用之前,先为人人申明一下,Gauge它充当着一个什么样的角色: 起首要邃晓,taiko为我们操纵浏览器供应了便利的指令,它运用js来编写。然则这就为我们测试团队建立了一个停滞,起首全员都得熟习JS的写法,比方await
等关键字等等,这无形提高了手艺操纵门坎。另有一点,我们一切的案例都将已大批js片断代码来保护,无疑增大了保护本钱。
那末gauge干了一个什么操纵呢? 它建立于taiko之上,许可测试职员将某某关键词与某段JS相对应,比方("跳转" 对应 taiko 的Goto
)。 如许有什么优点呢? 团队并不须要全员控制JS了。频仍的操纵用例能够一致为配合的指令,增添可保护性。
所以如今来看看Gauge供应的初始化项目,您很快就可以邃晓:
检察test
文件夹下面的step_implementation.js
文件。这里检察它的部份代码:
step("Goto getgauge github page", async () => {
await goto('https://github.com/getgauge');
});
也就是说'Goto getgauge github page' 对应着 taiko 的操纵 await goto('https://github.com/getgauge');。
然后再看看specs
文件夹下面的example.spec
。对应部份为:
* Goto getgauge github page
如许,用例编写职员只须要写出如许的语句就可以够完成操纵了。而测试团队中的某一小部份职员,担任js对应关联的编写,功用测试职员担任用例的编写,就可以很快的完成测试事情。
接下来我们来尝试运用它,在test
文件夹下面的step_implementation.js
文件中增添语句:
step("跳转到句幽博客", async () => {
await goto("baidu.com");
await write("句幽 博客园");
await link('句幽- 博客园').exists();
await click(link('句幽- 博客园'));
});
这部份代码熟习吗? 这是我们刚入手下手运用taiko所写的代码。如今我们将它包裹起来,对应到了跳转到句幽博客
这一指令。然后再到specs
文件夹下面的example.spec
增加对应操纵:
## 跳转测试
* 跳转到句幽博客
文本指令 Gauge 采用了MarkDown的写法。我们如今无需过去去相识markdown,只须要知道在spec文件中: #
代表的测试项目名,比方您能够定名(# 考勤剖析测试),而##
代表了测试用例,比方您能够定名(## 增加考勤职员)。 *
代表了步骤,步骤的称号来源于您从js文件里的关键词对应。
末了在终端中实行:
gauge run [你的spec的文件名]
就可以够举行测试,终究生成测试报告。
假如您装置了VS Code的Gauge插件,那末在进入'.spec'文件后,您能够看到每个用例上都有一个运转的按钮。点击就可以够实行用例。
总结
本文以一个小案例来为人人引见了什么是Taiko和Gauge,以及怎样运用它。那末和传统的自动化测试比拟,它有什么上风呢?以及在自动化测试框架百花齐放的本日,它和别的的框架比拟有什么优劣势呢?(比方和Robot Framework比拟)。以BDD(行动驱动开发)为核心理念的Taiko,是怎样践行BDD的呢? 怎样编写出更庞杂的用例以及怎样建立好的分区体式格局便团队成员保护等问题 都邑在后期文章中为人人举行引见。
什么是HDFS?算了,告诉你也不懂。