• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

基于Ruby的watir-webdriver自动化测试方案与实施(四)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
接着基于Ruby的watir-webdriver自动化测试方案与实施(三)
继续 ... ...
 
首先回忆下我们的系统架构,然后谈谈具体的实现。
 

该自动化测试框架分三个模块:Test用例、Control控制层、Tools工具类、model总控

Test用例

  1. 基于ruby的watir-webdriver开发
  2. 统一预置参数输入规则,提供规则模板,做到一个用例一个类,一个方法一个输出。(一个类可以多个方法)
  3. 统一输出规则,比如:①[info]②TiStone ③Login successful!④001011

    ①   [Info]:代表该用例执行成功![error]代表失败![warn]代表警告!

    ②   TiStone:代表执行用例名称

    ③   Login successful!:描述或捕获的value值,以“!”结尾

    ④   001011:返回码

  4.统一用例名称,应与输出②保持一致

Control控制层

  1. 一个用例对应一个Control
  2. 效验输出,判断用例执行成败,根据规则关联Linux服务器捕获相关日志、配置文件等分析失败原因,缩减定位区域范围。
  3. 对比数据,关联MySql查询数据,对比web捕获value值。

Tools工具类

  1. 封装工具类
  2. 关联Linux与MySql
  3. 提供测试用例支持,降低用例开发难度

Index总控

  1. 控制用例执行与展示

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby on rails 新手学习第五天发布时间:2022-07-14
下一篇:
Ruby中对XML文档的解析发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap