基于Ruby的watir-webdriver自动化测试方案与实施(四)
该自动化测试框架分三个模块:Test用例、Control控制层、Tools工具类、model总控。
Test用例
- 基于ruby的watir-webdriver开发
- 统一预置参数输入规则,提供规则模板,做到一个用例一个类,一个方法一个输出。(一个类可以多个方法)
- 统一输出规则,比如:①[info]②TiStone ③Login successful!④001011
① [Info]:代表该用例执行成功![error]代表失败![warn]代表警告!
② TiStone:代表执行用例名称
③ Login successful!:描述或捕获的value值,以“!”结尾
④ 001011:返回码
4.统一用例名称,应与输出②保持一致
Control控制层
- 一个用例对应一个Control
- 效验输出,判断用例执行成败,根据规则关联Linux服务器捕获相关日志、配置文件等分析失败原因,缩减定位区域范围。
- 对比数据,关联MySql查询数据,对比web捕获value值。
Tools工具类
- 封装工具类
- 关联Linux与MySql
- 提供测试用例支持,降低用例开发难度
Index总控
- 控制用例执行与展示
方案设计
Test用例
涉及依赖:
require 'watir-webdriver'
require 'watir-webdriver-performance'
页面加载性能监控
1.times do b.goto("https://192.168.10.1/web") load_secs = b.performance.summary[:response_time]/1000 puts "Load Time: #{load_secs} seconds." End
功能成败判别
if b.text.include? 'T_100M'
#捕获web属性value值
#后续操作
puts "①[info]②TiStone ③Login successful!000000"
else
#后续操作
#输出错误码
puts "①[error]②TiStone ③Login failed!001011"
end
参数化提取
class BasicNumber
def initialize(number,name)
@number = number
@name = name
end
def add(x)
@number + x
end
end
Control控制层
涉及依赖:
load 'Linux.rb'
load 'MySql.rb'
具体实现与Tools通信,做一个信息传输的枢纽。
Tools工具类
涉及依赖:
require 'net/ssh'
require 'scp/ssh'
require "test/unit"
关联Linux
#ip/用户名/密码 host = "192.168.48.233" username = "root" password = "root" #调用linux命令 server_cmd1 = 'tail -1000 /home/log/web.log | grep ERROR' server_shell= 'sh /home/wyong/w.sh'
关联MySql
具体实现略…
单元测试
class TC_MyTest < Test::Unit::TestCase def test_add n=BasicNumber.new(10) assert_equal(134,n.add(4),"This test about add is failure!") end end
model总控
涉及依赖:
load Control_用例名称.rb'
统一调用
t = Control_用例名称.new test_methods = t.public_methods.grep(/^test_/) test_methods.each do |test| t.send(test) end
基于Ruby的watir-webdriver自动化测试方案与实施(四)的更多相关文章
- 基于Ruby的watir-webdriver自动化测试方案与实施(三)
接着基于Ruby的watir-webdriver自动化测试方案与实施(二) http://www.cnblogs.com/Javame/p/4159468.html 继续 ... ... 编写脚本 ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(五)
接着基于Ruby的watir-webdriver自动化测试方案与实施(四) http://www.cnblogs.com/Javame/p/4164570.html 继续 ... ... 关于特殊控件 ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(二)
接着基于Ruby的watir-webdriver自动化测试方案与实施(一) http://www.cnblogs.com/Javame/p/4159360.html 继续 ... ... 回顾 软 ...
- 基于ruby的watir自动化测试 笔记一
基于Ruby的watir-webdriver自动化测试方案与实施(五) 基于Ruby的watir-webdriver自动化测试方案与实施(四) 基于Ruby的watir-webdriver自动 ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(一)
基于Ruby的watir-webdriver自动化测试方案与实施(五) 基于Ruby的watir-webdriver自动化测试方案与实施(四) 基于Ruby的watir-webdriver自动 ...
- 基于ruby的watir自动化测试 笔记二
基于ruby的watir自动化测试 笔记一的补充版,新增加了些特殊的控件捕获方法.还在更新中.... attribute_value 获取当前控件的属性 Value = ie.link(:id=> ...
- 基于Java+Selenium的WebUI自动化测试框架(十四)-----使用TestNG的Sample
到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当 ...
- <自动化测试方案_4>第四章、选型标准
第四章.选型标准 1,免费 2,工具可维护.可扩展 3,支持团队工作
- 基于Ruby的Watir-WebDriver自动化测试框架
基于Ruby的watir-webdriver自动化测试方案与实施(五) 基于Ruby的watir-webdriver自动化测试方案与实施(四) 基于Ruby的watir-webdriver自动 ...
随机推荐
- ES6 - Note3:数组、对象与函数的扩展
一.数组的扩展,ES6在数组扩展了一些API,以实现更多的功能 1.Array.from:可以将类数组和可遍历的数据结构转换成真正的数组,如下所示 var a = { '0':1,'1':1,leng ...
- 有意思的Python:开发和部署一览
我觉得在有时间的条件下,学习不同的开发语言,对于保持对技术的理解是有帮助的. Python是一门这样简单而且有趣的语言.网上资料已经比较多了.我这里主要对开发和部署环境所涉及的几个工具做些介绍. 1. ...
- 关于SVN链接服务器Unable to connect to a repository at URL*报错问题
在BAE上托管了写代码,想用SVN做版本控制,可是死活连不上,但用Dreamweave可以连上,整了半天是dan疼的缓存问题,清一下缓存就OK了. TortoiseSVN->Setting-&g ...
- T-Sql(六)触发器(trigger)
不知不觉讲到触发器了,一般我们做程序的很少接触到触发器,触发器的操作一般是DB人员来完成. 然而有的时候一些简单的业务需要我们自己去完成,不能每次都去麻烦DB人员,所以说,编程人员要全才,除了编程以为 ...
- [c++] constexpr and literal class
稀奇古怪的新特性,菜鸟在此啄上一啄. 1. When should literal classes be used in C++? 2. int i; // not constant const ...
- new的探究
new操作符易用,但是往往容易忽略对其的理解. var foo= new Foo(); 这个简单的语句,涉及到了一系列的步骤: 1),给对象开辟内存,即 var foo= {}; 2),修改新对象的隐 ...
- ASP.NET实现微信功能(1)(创建菜单,验证,给菜单添加事件)
LZ实在 不知道怎么起名字了,索性就取了这个名字,开始吧,说实在的,想给自己的平常的学习做一个总结,总是忘了总结.也只能给工作做一个总结了. 我打算用2篇文章来写,第一篇是关于订阅号的,就是这个号,另 ...
- C#异常处理的几个原则
转载来自:http://www.oecp.cn/hi/LiuBP/blog/2312 在开发应用程序的时候,异常处理是非常的重要的,我找到一些异常处理准则,将它共享出来,如有不同意见,欢迎提出来一起探 ...
- OpenCV2:Mat
1.Mat基础 在计算机内存中,数字图像是已矩阵的形式保存的.OpenCV2中,数据结构Mat是保存图像像素信息的矩阵,它主要包含两部分:矩阵头和一个指向像素数据的矩阵指针. 矩阵头主要包含,矩阵尺寸 ...
- 初来乍到 Java 和 .Net 迭代器功能
最近有一个需求是这样的, 根据键值对存储类型数据,也算是数据缓存块模块功能设计. 一个键对应多个值.每一个键的值类型相同,但是每个不同的键之间类型不一定相同. Java 设计如下 HashMap< ...