自动化测试工具gauge
Gauge测试自动化工具
一、概述
官方网站:https://docs.gauge.org/index.html
介绍: Gauge是一个轻量级的跨平台测试自动化工具,可以使用不同的语言编写测试用例的能力( Java, C#, Python, Typescript and Golang)。Gauge本质上是一个BDD(行为驱动开发)测试框架。
Gauge有如下特点:
· 兼容多系统:window/macOS/Linux,它基于Go语言开发。
· 支持多种编程语言:Java、Python、JavaScript、Ruby等。
· IDE支持:Visual Studio Code和IntelliJ 都可以找到相应的插件。
· Markdown语法:这一点与一般的BDD框架不同,Gauge通过Markdown来描述行为。
· 多种数据支持:看官方文档支持CSV数据文件的读取。
· 支持测试报告:可以生成HTML、XML、JSON格式的报告。
二、安装gauge
安装: github地址:https://github.com/getgauge/gauge/releases
根据自己的操作系统选择对应的下载版本。这里以Windows为例,下载 gauge-1.1.1-windows.x86_64.exe 文件,双击安装即可。
打开Windows的cmd命令控制台,输入gauge –help或者gauge --version回车。
如果看到上面的信息说明安装成功。
三、安装插件
【百度网盘链接】https://pan.baidu.com/s/1bidE34gLLrSI8sQ9Lg9R7Q【提取码】p0j9
1)安装gague-js插件
[在线安装,十分缓慢,不推荐]
gauge install js
[本地安装,推荐]
gauge install js -f gauge-js-2.3.11.zip
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插件,此插件用于生成测试报告;依然可以在线安装,这里直接演示本地安装
[在线安装]
gauge install html-report
[本地安装]
gauge install html-report -f html-report-4.0.11-windows.x86_64.zip
gauge install html-report -f html-report-4.0.11-windows.x86_64.zip Successfully installed plugin 'html-report' version 4.0.11 |
【备注】若遇到失败,关闭控制台,重新尝试
四、案例演示
本例则采用JavaScript为例演示过程:
1、初始化项目
创建工程文件路径,进入工程路径,执行gauge init js命令,初始化完成后在工程目录下会生成模板文件。如下图所示:
2、目录及文件介绍
js-demo
|-env # 配置文件
|-node_modules # 依赖的模块
|-logs # 日志文件
|-specs # gague 测试文档目录,主要目录
|-example.spec # 测试文档,主要文件
|-tests # 具体的逻辑代码所在目录,主要目录
|-step_implementation.js # 具体的逻辑代码,基于node.js语法,主要文件
|-manifest.json # 项目属性文件,不建议修改
|-metadata.json # 项目基本信息,可以修改描述等信息
|-package.json # node.js 项目包结构文件,次要文件
3、工具使用说明
进行相关测试一般会对D:\Codes\js-demo\specs\example.spec文件和D:\Codes\js-demo\tests\step_implementation.js文件进行编辑修改即可完成自动化测试。
4、书写规范
example.spec书写规范:
# 天擎API测试报告 【#】一级标题有且只能有一个位于行首,为测试入口
## 图像搜索 【##】二级标题可以有多个,为测试阶段;指一组相关场景的集合
Tags: 图像搜索、图片比对、布控服务、数据服务 【Tags】定义标签,可以用于对一级标题或二级标题的注释说明,也可用于搜索标签
场景1:以图搜图-无图片查询——/search 没有任何特殊字符开头的是注释,"场景1:以图搜图-无图片查询——/search "是注释说明
* Open Baidu "http://www.baidu.com" * Search "http://47.110.90.107:8058/search",parameter "{\"from\":0,\"size\":10,\"data\":{\"uid\":\"a\",\"type\":\"person\",\"startTime\":1580995744000,\"endTime\":1591496589000}}"
【*】开头的是具体的测试步骤;后面跟的是要传入测试代码名称;测试代码中以此名称来查找具体的测试方法; 双引号在这里指的是要传入测试代码的变量(参数) |
step_implementation.js书写规范:
"use strict"; const request = require("request"); //GET请求 step("Open Baidu <url>", async (url) => { var options = { method:'get', encoding:'utf-8', url:url }; request(options,(err,res,body)=>{ console.log(body.toString()); } ); }); //POST请求 step("Search <url>,parameter <parameter>", async (url,parameter) => { var options = { method:'post', encoding:'utf-8', headers: { 'Content-Type': 'application/json', "Accept":"*/*", "Connection":"keep-alive", 'Content-Length':parameter.length }, url:url }; await request(options,(err,res,body)=>{ console.log("------------------------------------------------------------------------"); console.log("HTTP 状态码:"+res.statusCode+"\t"+"HTTP 协议版本:"+res.httpVersion); console.log("响应信息:\t"+body.toString()); console.log("json数据解析:\t"); console.log(JSON.parse(body.toString())); console.log("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); }).write(parameter); }); 注意: step("Search <url>,parameter <parameter>", async (…)=> {…}); step("Open Baidu <url>", async (…)=> {…}); 必须要与.spec中的相一致,否则会报错。【.spec中使用双引号表示参数变量,.js中使用尖括号表示变量参数】 |
5、实例代码
example.spec示例:
# 天擎API测试报告 Tags: 图像搜索、图片比对、布控服务、数据服务
## 图像搜索 tags: 图像搜索 场景1:以图搜图-无图片查询——/search * Search "http://47.110.90.107:8058/search",parameter "{\"from\":0,\"size\":10,\"data\":{\"uid\":\"a\",\"type\":\"person\",\"startTime\":1580995744000,\"endTime\":1591496589000}}"
##打开百度 Tags:获取百度首页信息 * Open Baidu "http://www.baidu.com" |
step_implementation.js示例:
"use strict"; const request = require("request");
step("Search <url>,parameter <parameter>", async (url,parameter) => { var options = { method:'post', encoding:'utf-8', headers: { 'Content-Type': 'application/json', "Accept":"*/*", "Connection":"keep-alive", 'Content-Length':parameter.length }, url:url }; await request(options,(err,res,body)=>{ console.log("------------------------------------------------------------------------"); console.log("HTTP 状态码:"+res.statusCode+"\t"+"HTTP 协议版本:"+res.httpVersion); console.log("响应信息:\t"+body.toString()); console.log("json数据解析:\t"); console.log(JSON.parse(body.toString())); console.log("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); }).write(parameter); });
step("similarity <url>,parameter <parameter2>", async (url,parameter2) => { var options1 = { method:'post', encoding:'utf-8', headers: { 'Content-Type': 'application/json', "Accept":"*/*", "Connection":"keep-alive", 'Content-Length':parameter2.length }, url:url }; await request(options1,(err1,res1,body1)=>{ console.log(777);
console.log("************************************************************************"); console.log("HTTP 状态码:"+res1.statusCode+"\t"+"HTTP 协议版本:"+res1.httpVersion); console.log("响应信息:\t"+body1.toString()); console.log("json数据解析:\t"); console.log(JSON.parse(body1.toString())); console.log("========================================================================");
console.log(888); }).write(parameter2); });
step("Open Baidu <url>", async (url) => { var options = { method:'get', encoding:'utf-8', url:url }; request(options,(err,res,body)=>{ console.log(body.toString()); } ); }); |
6、执行测试
运行gauge run spec/example.spec命令,显示出如下结果信息以及生成测试报告单,以HTML形式展现出来,打开index.html可以查看测试结果。
用浏览器访问生成报告的位置:D:\Codes\js-demo\reports\html-report\index.html
其他供参考案例:
JavaScript案例请参考:
https://www.cnblogs.com/gail-hu/p/12990312.html?utm_source=tuicool&utm_medium=referral
Java案例请参考网址:
https://blog.****.net/u013360850/article/details/56484796?%3E