侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Windows下Ruby+Watir自动化测试的环境搭建及数据读取

Windows  /  管理员 发布于 5年前   409

Watir的使用环境搭建

1、watir环境工具安装包:

1) ruby186-26.exe下载地址:http://files.rubyforge.vm.bytemark.co.uk/rubyinstaller/
2) watir-1.5.2.gem下载地址:http://rubyforge.org/frs/?group_id=104&release_id=28016
3)rubygems-update-1.3.7.gem下载地址:http://rubyforge.org/frs/?group_id=126

2、firewatir环境工具安装包:

1)步骤1中的软件包
2)Firefox2.0下载地址:http://www.hacker.cn/Get/gjrj/06102608545293311.shtml
3)firefox插件:firbug1.05,JSSh。Jssh下载地址:地址
4)Firewatir-1.1下载地址:http://rubyforge.org/frs/?group_id=104&release_id=28017

3、watir安装
1)安装ruby186-26.exe;
2)升级gem,把gem包拷贝到ruby安装目录,在命令行输入命令:gem install rubygems-update 1.3.7.gem(gem包名)。提醒:安装完后进入ruby目录:lib\ruby\gems\1.8\gems\rubygems-update-1.3.4,点击这个文件夹中的文件:setup.rb,升级gem即可
3) 安装watir包,把watir包拷贝到ruby安装目录,使用命令行进入ruby安装的目录,输入命令:gem install watir-1.5.2.gem。
4)使用命令gem list查看是否安装成功。

4、安装firewatir

1)安装firefox和firebug,Jssh插件,安装方法:打开firefox浏览器,点击“文件”/“打开”,选择插件文件名,安装即可。

2)安装firewatir,使用命令行进入ruby安装的目录,输入命令:gem install firewatir-1.1.gem

5、测试firewatir是否安装成功?

使用命令行进入firewatir安装路径下(\ruby\lib\ruby\gems\1.8\gems\firewatir-1.1),进入unittests文件夹,输入命令:ruby mozilla_all_tests.rb,如果可以正确执行程序,说明安装正确没有问题,到此可以开始自动化测试开发的旅程了。

6、在安装watir过程出现'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。

使用命令

gem install --local watir-1.5.2.gem 

就安装成功了!


读取各种数据源中的测试参数化数据
自动化测试时常用到的技术就是参数化,不支持参数化的测试框架是痛苦的。QTP自身本来就有,但是类似ruby的watir,以及selenium等都不是天然支持的,因为这些个框架只提供了最基础的自动化驱动类库,而驱动以外的执行管理、数据管理等又是一个课题。大部分的selenium和watir类似项目用的执行框架都是单元测试的框架,天然也不支持参数化。现在只有junit4版本支持参数化,以及testNG默认支持多种参数化。如果你开始项目的话可以优先考虑兼容这些类似框架的语言来做自动化。
watir虽然本身不支持参数化,ruby的单元测试也不支持,但是参数化也要做啊,没办法只能想想变通的法子。所以单独写了一个参数化的类,来补充一下参数化功能的不足。其工作方式是提供统一的测试数据源的数据读取,在单元测试中调用这个接口,但是不指定具体的参数行,这个参数行在单独的配置文件里配置。这个就可以统一的管理每次测试执行时所取用的参数行内容了。下面的代码是用来取用各种数据源里面的测试数据的。

#encoding: utf-8 require 'DBI' require 'odbc_utf8'  def generate_sql(table, what=nil, where=nil)  what="*" unless what  where="1=1" unless where  "select %s from %s where %s" % [what, table, where] end  def generate_hash(header, all_data)  t_arr = []  all_data.each do | row |  t_hash = {}  for i in 0..header.size-1 do   t_hash[header[i]] = row[i]  end  t_arr << t_hash  end  t_arr end  def select_hash_db(dsn,user,password,db,sql)  begin  dbh = DBI.connect(dsn, user, password)  dbh.do("use #{db}")  dbh.do("SET NAMES UTF8") if dsn.split(':')[1] == "Mysql"  sth = dbh.execute(sql)  arr = Array.new  sth.fetch_hash do | row |   arr << row  end  sth.finish  arr  rescue DBI::DatabaseError => e  puts "An error occurred"  puts "Error code: #{e.err}"  puts "Error message: #{e.errstr}"  ensure  dbh.disconnect if dbh  end end  class Text_Adapter   def initialize(file_path, sep=" ", col_num=nil, row_num=nil)   end   def get_pars(row=nil)   end  end  class Mysql_Adapter  def initialize(ds_connector, table_name, what=nil, where=nil)  @sql_str = generate_sql(table_name, what, where)  @ds_connector = ds_connector  end   def get_pars(row=nil)  dsc_arr = @ds_connector.split("#")  all_data = select_hash_db(dsc_arr[0],dsc_arr[1],dsc_arr[2],dsc_arr[3],@sql_str)  if row.class==Fixnum   all_data[row]  else   all_data  end  end end  class Excel_Adapter   def initialize(ds_connector, table_name, what=nil, where=nil)  @connection = WIN32OLE.new('ADODB.Connection')  @record_set = WIN32OLE.new('ADODB.Recordset')  @ds_connector = ds_connector  @sql_str = generate_sql(table_name, what, where)  end   def get_pars(row=nil)  t_arr = []  @connection.Open(@ds_connector)  @record_set.Open(@sql_str, @connection)  @record_set.Fields.count.times do | i |   t_arr << @record_set.Fields.Item(i).name  end  all_data = @record_set.GetRows.transpose  all_data = generate_hash(t_arr, all_data)  if row.class==Fixnum   all_data[row]  else   all_data  end  end end   class Parameter  def initialize(ds_connector, table_name, what=nil, where=nil)  dsc_arr = ds_connector.split("#", 2)  eval("@adp = #{dsc_arr[0]}.new dsc_arr[1], table_name, what, where")  end   def get_pars(row=nil)  @adp.get_pars(row)  end end 

调用方法:

par = Parameter.new(Ds_mysql_connector, 'demo') p par.get_pars(0) 

配置文件配置:

##链接excel中数据库的串 EXCEL_DSN = %{Excel_Adapter#Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 5.0;} EXCEL_FILE = %{D:\\1.xlsx} ##链接mysql的串 Ds_mysql_connector = %{Mysql_Adapter#DBI:Mysql:shoppingcart:127.0.0.1#root#password#shoppingcart} ##指定当次运行侧事故参数的行号,从0开始 PAR_ROW = 1 

相应的文件指向路径、ip地址、数据库名、用户名、密码等需要修改


  • 上一条:
    win7上python2.7连接mysql数据库的方法
    下一条:
    Windows下安装配置Ruby的debug工具ruby-debug-base19
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
    • windows 11激活_Win11 KMS激活流程步骤(1个评论)
    • 安装Windows 11系统的注意了,看看你的cpu是否在微软兼容列表排除中(1个评论)
    • 微软将于2022年9月20日推送Windows11 22H2新版本,推测2024发布windows 12(0个评论)
    • windows11系统中可以关闭禁止的服务及介绍(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-01
    • 2018-06
    • 2020-06
    • 2021-06
    • 2021-07
    • 2022-01
    • 2022-04
    • 2022-08
    • 2023-08
    • 2023-10
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客