Gauge框架在JS中的简单应用
gauge框架简介
Gauge是一个轻量级的跨平台测试自动化工具。
gauge安装[Win10 64位下测试]
【百度网盘链接】https://pan.baidu.com/s/1bidE34gLLrSI8sQ9Lg9R7Q
【提取码】p0j9
1、下载
找到自己需要的版本,点击下载。
本文档使用版本(gauge-1.0.8-windows.x86_64.zip)
【下载地址】https://github.com/getgauge/gauge/releases
点击跳转git-hub链接地址
【注意】
1)darwin是MAC平台
2)需要安装node.js,且npm和node命令可用
2、安装
本文档使用的解压版本,解压即可
3、配置环境变量
将解压出来的gauge.exe所在文件夹配置到系统环境变量Path中
4、检测
查看安装是否成功
C:\Users\Administrator>npm -v
6.14.4
C:\Users\Administrator>node -v
v12.16.3
C:\Users\Administrator>gauge -v
Gauge version: 1.0.8
Commit Hash: 28617ea
Plugins
-------
No plugins found
Plugins can be installed with `gauge install {plugin-name}`
5、安装插件
1)安装gague-js插件
[在线安装,十分缓慢,不推荐]
gauge install js
[本地安装,推荐]
gauge install js -f gauge-js-2.3.11.zip
C:\Gail\Dev\gauge>gauge install js -f gauge-js-2.3.11.zip
audited 308 packages in 6.696s
found 0 vulnerabilities
Successfully installed plugin 'js' version 2.3.11
2)安装html-report插件,此插件用于生成测试报告;依然可以在线安装,这里直接演示本地安装
C:\Gail\Dev\gauge>gauge install html-report -f html-report-4.0.11-windows.x86_64.zip
Successfully installed plugin 'html-report' version 4.0.11
【备注】若遇到失败,关闭控制台,重新尝试
6、初始化js项目【注意】在空文件夹中进行
#创建文件夹
mkdir js-demo
cd js-demo
#简单创建
gauge init js
创建过程中。。。
C:\Gail\Dev\gauge\js-demo>gauge init js
Downloading js.zip
Copying Gauge template js to current directory ...
[ .................] - fetchMetadata: sill pacote range manifest for @types/yauzl@^2.9.1 fetched in 1182ms
正在下载Chromium。。。到这一步建议两次Ctrl+C取消下载
C:\Gail\Dev\gauge\js-demo>gauge init js
Downloading js.zip
Copying Gauge template js to current directory ...
> taiko@1.0.11 install C:\Gail\Dev\gauge\js-demo\node_modules\taiko
> node lib/install.js
Downloading Chromium r767160 - 145.9 Mb [ ] 1% 5662.0s
完整的操作代码
C:\Gail\Dev\gauge>mkdir js-demo
C:\Gail\Dev\gauge>cd js-demo
C:\Gail\Dev\gauge\js-demo>gauge init js
Downloading js.zip
Copying Gauge template js to current directory ...
> taiko@1.0.11 install C:\Gail\Dev\gauge\js-demo\node_modules\taiko
> node lib/install.js
Downloading Chromium r767160 - 145.9 Mb [ ] 1% 12634.4s
C:\Gail\Dev\gauge\js-demo>终止批处理操作吗(Y/N)?
^CC:\Gail\Dev\gauge\js-demo>
【注意】在创建过程中,会下载很多东西,也不知道都下载的什么玩意;在本人的深入研究下,它默认会依赖一个叫做[taiko]的模块,这个是自动化模拟浏览器操作的框架,详情请自行百度;要下载Chromium,速度及其缓慢不说,还容易卡死。
由于本教程不使用taiko模块,此处不再下载。若需要完整的init示例,本人推荐使用网盘下载[demo-taiko-chrome.rar],或者留言邮箱gail_hu@126.com
7、目录及文件介绍
目录:
js-demo
|-env # 配置文件
|-node_modules # 依赖的模块
|-logs # 日志文件
|-specs # gague 测试文档目录,主要目录
|-|-example.spec # 测试文档,主要文件
|-tests # 具体的逻辑代码所在目录,主要目录
|-|-step_implementation.js # 具体的逻辑代码,基于node.js语法,主要文件
|-manifest.json # 项目属性文件,不建议修改
|-metadata.json # 项目基本信息,可以修改描述等信息
|-package.json # node.js 项目包结构文件,次要文件;下面的【重点提示】里面会提到这个
文件:
[example.spec]
默认基于markdown语法,也可以用别的写法,详情请自行百度gauge语法;
没有任何特殊字符开头的是注释,"This is an executable..."是注释说明;
一级标题只能有一个,为测试入口;
二级标题可以有多个,为测试阶段;
以[* ]开头的是具体的测试步骤;后面跟的是要传入测试代码名称;测试代码中以此名称来查找具体的测试方法;
双引号在这里指的是要传入测试代码的变量
# Getting Started with Gauge
This is an executable specification file. This file follows markdown syntax. Every heading in this file denotes a scenario. Every bulleted point denotes a step.
To execute this specification, use
npm test
## Search Taiko Repository
* Goto getgauge github page
* Search for "Taiko"
* Page contains "getgauge/taiko"
[step_implementation.js]默认基于node.js语法,不懂请自行学习node.js语法
/* globals gauge*/
"use strict";
const { openBrowser,write, closeBrowser, goto, press, screenshot, text, focus, textBox, toRightOf } = require('taiko');
const assert = require("assert");
const headless = process.env.headless_chrome.toLowerCase() === 'true';
beforeSuite(async () => {
await openBrowser({ headless: headless })
});
afterSuite(async () => {
await closeBrowser();
});
gauge.screenshotFn = async function() {
return await screenshot({ encoding: 'base64' });
};
step("Goto getgauge github page", async () => {
await goto('https://github.com/getgauge');
});
step("Search for <query>", async (query) => {
await focus(textBox(toRightOf('Pricing')))
await write(query);
await press('Enter');
});
step("Page contains <content>", async (content) => {
assert.ok(await text(content).exists());
});
8、项目改造测试
【代码改造】
[example.spec]
# Getting Started with Gauge
npm test
## Start Test
* Open Baidu "https://www.baidu.com"
[step_implementation.js]
/* globals gauge*/
"use strict";
const request = require("request");
step("Open Baidu <url>", async (url) => {
var options = {method:'get',encoding:'utf-8',url:url};
request(options,(err,res,body)=>{
console.log(body.toString());
});
});
【代码说明】
发起一个打开百度,获取页面内容的测试。
【测试结果】
D:\Develop\gauge\js-demo>npm test
> gauge-taiko-template@0.0.1 test D:\Develop\gauge\js-demo
> gauge run specs/
# Getting Started with Gauge
## Start Test P
<!DOCTYPE html><!--STATUS OK-->
<hrml>...中间省略...</html>
Successfully generated html-report to => D:\Develop\gauge\js-demo\reports\html-report\index.html
Specifications: 1 executed 1 passed 0 failed 0 skipped
Scenarios: 1 executed 1 passed 0 failed 0 skipped
Total time taken: 401ms
【测试说明】
如果出现问题,请参考下面【重点提示】。
重点提示-初始化项目
1、初始化项目,需要安装对应语言的插件
2、初始化项目,一般在空文件夹下进行[以下代码在Windows控制台中进行]
gauge install (语言)
gauge init (语言)
例如初始化Java
gauge install java
mkdir java-demo
cd java-demo
gauge init java
初始化python
gauge install python
mkdir python-demo
cd python-demo
gauge init python
3、每次初始化项目都会重新下载那些包,建议使用node.js直接初始化node项目,自己进行补充;或者直接手动创建。
重点提示-项目精简
[package.json]源文件
{
"name": "gauge-taiko-template",
"version": "0.0.1",
"description": "Starter template for writing JavaScript tests for Gauge",
"scripts": {
"test": "gauge run specs/"
},
"dependencies": {
"request": "^2.88.2",
"taiko": "latest"
}
}
[package.json]文件说明
"name" 项目名,可修改
"version" 版本号,可修改
"description" 项目描述,可修改
"scripts" 执行脚本,不建议修改
"dependencies" 项目依赖,这里要删除[taiko],不然每次初始化都会下载Chromium。如果项目用到这个插件,建议手动复制模块进去。
文件修改后
{
"name": "gauge-template",
"version": "0.0.1",
"description": "JavaScript tests for Gauge",
"scripts": {
"test": "gauge run specs/"
},
"dependencies": {
"request": "^2.88.2",
}
}
执行测试之前,删除无关文件,删除后目录如下
|-env
|-|-default
|-|--default.properties
|-|--headless.properties
|-|--js.properties
|-specs
|-|-example.spec
|-tests
|-|-step_implementation.js
|-manifest.json
|-metadata.json
|-package.json
这里执行测试仍旧仅测试打开百度,获取响应。
#在项目根目录打开控制台,安装项目
npm install
#测试项目
npm test
#测试结果和之前一致
测试中遇到的问题
1、提示安装XXX插件或模块
【解决办法】
1)耐心等待;
2)拷贝相应的模块到node_modules
3)npm install 安装相应的模块,但是node.js模块要配置到环境变量,从而达到在系统中的任何地方都能优先使用node.js的模块。
2、关于nodeJs插件的引用错误问题,主要是install安装的路径,比较复杂,建议参考这个链接
Gauge框架在JS中的简单应用的更多相关文章
- 【补充说明】Gauge框架在JS中的简单应用
这里做一个总结 由于公司架构要用node来替代Java的部分服务,所以就研究了这个自动化测试框架:它可以很方便的测试我们的接口,而且还能使用断言[assert]来判断是否是我们预期的结果. 但是呢,由 ...
- springMVC框架在js中使用window.location.href请求url时IE不兼容问题解决
是使用springMVC框架时,有时候需要在js中使用window.location.href来请求url,比如下面的路径: window.location.href = 'forecast/down ...
- 前台框架vue.js中怎样嵌入 Echarts 组件?
目前常用的图标插件有 charts, Echarts, highcharts.这次将介绍 Echarts 在 Vue 项目中的应用. 一.安装插件 使用 cnpm 安装 Echarts cnpm i ...
- 用CI框架向数据库中实现简单的增删改查
以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html Code ...
- Js 中json简单处理
Json2.js下载地址 json常用处理 Json字符串 var str = '{"code":10,"msg":"codemsg",&q ...
- js中indexof()简单使用
indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置. stringObject.indexOf(searchvalue,fromindex):indexOf()方法对大小写敏感如果要 ...
- js中的简单数据类型和复杂数据类型的存储
基本类型存储的是值而复杂数据类型也叫引用类型存储的是对象的地址如0x00001而在栈中存的是变量数值和函数参数 堆中存的是对象和数组 堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的 ...
- js-分享107个js中的非常实用的小技巧(借鉴保存)
转载原文:http://***/Show.aspx?id=285 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:doc ...
- Bom和Dom编程以及js中prototype的详解
一.Bom编程: 1.事件练习: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
随机推荐
- libevent(四)event_base 2
接上文libevent(三)event_base event_io_map event_list是双向链表,min_heap是小根堆,那event_io_map是什么呢? #ifdef WIN32 # ...
- 绕WAF文章收集
在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...
- YOLACT : 首个实时one-stage实例分割模型,29.8mAP/33.5fps | ICCV 2019
论文巧妙地基于one-stage目标检测算法提出实时实例分割算法YOLACT,整体的架构设计十分轻量,在速度和效果上面达到很好的trade-off. 来源:[晓飞的算法工程笔记] 公众号 论文: ...
- 【XR-3】核心城市(树直径)
[XR-3]核心城市 这题真的难啊......... k个核心城市太麻烦,我们假设先找一个核心城市,应该放在哪里? \(任意取一个点,它的最远端是直径的端点.\) \(所以当这个点是直径的中点时,可以 ...
- NSNotification,NSNotificationCenter的使用、iOS中五种对象间传值的方式
学习内容 NSNitification与NotificationCenter(通知与通知中心) 通知的使用 [[NSNotificationCenter defaultCenter]addObserv ...
- SpringCloudStream学习(二)RabbitMQ中的交换机跟工作模式
知识储备: 交换机: RabbitMQ中有4中交换机,分别是 (FANOUT)扇形交换机: 扇形交换机是最基本的交换机类型,它所能做的事情非常简单---广播消息.扇形交换机会把能接收到的消息全部发 ...
- ubuntu上lib-ace库安装编译
描述下本人电脑情况: 虚拟机版本:VMware-workstation-full-v7.1.4: ACE版本:ACE6.0.0 虚拟机[Linux](http://lib.csdn.net/base/ ...
- 内容安全策略(CSP)详解
1.背景 1.1.同源策略 网站的安全模式源于"同源策略",web浏览器允许第一个web页面中的脚本访问页面中的数据,但前提是两个web页面具有相同的源.此策略防止一个页面的恶意脚 ...
- Docker之从零开始制作docker镜像
以前学习docker是直接docker pull命令直接拉取Linux中已有镜像,并创建容器,添加应用程序,但是docker镜像一开始是怎么来的呢?下面将从零开始介绍整个docker镜像的制作过程(初 ...
- Gitlab 安装、升级、备份、恢复、汉化等
一.Gitlab安装 1. 基于yum方式安装Gitlab 安装步骤如下 (1)配置yum源 # vim /etc/yum.repos.d/gitlab-ce.repo (2)复制如下内容并保存(注意 ...