ruby+selenium-webdriver一步一步完成自动化测试(4)—–逻辑与数据分离

作者: tim_sheng
发布时间:2015-07-13 11:30:58

上一篇面向对象编辑,貌似这个用例已经很完美,但是还有不完善的地方,测试数据(用户名、密码、断言的判断数据)还是硬编码,要想做的更完美,实现逻辑与数据分离,这才是自动化测试的真谛。

方法:运用yaml,读取配置文件中测试数据

1.D盘新建文件夹test004,test004文件夹下创建文件夹action、config、spec、tool。

action文件夹中新建文件login_main_page.rb

config文件夹中新建文件login_data.yml

spec文件夹中新建文件login_spec.rb

tool文件夹中新建文件login_dialog.rb

2.login_dialog.rb文件内容与上一篇“面向对象编程”中login_dialog.rb内容一致

3.login_main_page.rb文件内容与上一篇“面向对象编程”中login_main_page.rb内容一致

4.login_data.yml文件中编写如下内容:

data:    mainPage:      url: http://www.soso.com      title: 搜搜更懂你        login:      wrong:        username: test        password: test        message: 您输入的帐号或密码不正确,请重新输入。意见反馈  

5.login_spec.rb文件中编写如下内容:

#encoding: utf-8  require "rspec"  require 'yaml'  require 'selenium-webdriver'      require File.dirname(__FILE__)+'/../action/login_main_page'  require File.dirname(__FILE__)+'/../tool/login_dialog'      describe "soso login" do    include LoginDialog    before(:all) do      @problem=YAML.load(File.open(File.dirname(__FILE__)+'/../config/login_data.yml'))      @dr=Selenium::WebDriver.for :firefox      @url=@problem["data"]["mainPage"]["url"]      #@url='http://www.soso.com'      @dr.get @url    end    before(:each) do      @login_element=LoginMainPage.new(@dr)    end    after(:each) do        close_browser    end       it "should return username and password is wrong" do      @login_element.login(@problem["data"]["login"]["wrong"]["username"],@problem["data"]["login"]["wrong"]["password"])      err_message.should eql (@problem["data"]["login"]["wrong"]["message"])    end  end  

  

6.命令行运行命令:

 

cd d:\test004

rspec -f doc

得到如下结果:

soso login    should return username and password is wrong      Finished in 9.23 seconds  1 example, 0 failures  

  运行通过

来源:http://www.cnblogs.com/timsheng/archive/2012/09/12/2682643.h

推荐: