如何通过提供多个输入来自动化测试用例?

时间:2015-07-22 09:13:54

标签: ruby automation watir

require 'rubygems'
require 'watir'
require 'watir-webdriver/wait'

username = 'abcd'
password = '1234'

Watir::Browser.new :firefox

puts 'Beginning of test: Yahoo Login.'
puts ' Step 1: go to the test site: ' + '<https://mail.yahoo.com>'
browser = Watir::Browser.start '<https://mail.yahoo.com>'

puts 'Step 2: enter username'
browser.text_field(id: 'login-username').when_present.set(username)
browser.text_field(id: 'login-username').wait_until_present

puts 'Step 3: enter password'
browser.text_field(:id, 'login-passwd').set(password)

puts 'Step 4: Check keep me signed in check box'
browser.checkbox(:id, 'persistent').clear

puts 'Step 5: Click sign in button'
browser.button(:value, 'Sign In').click

if browser.text.include? ' This ID is not yet taken. '
  puts 'Testcase01 pass : Enter a valid username '
  Kernel.exit(false)
end

if browser.text.include? 'Please enter your password'
  puts 'Testcase02 pass : password can not be blank'
  Kernel.exit(false)
end

browser.button(id: 'mail-search-btn').when_present
browser.button(id: 'mail-search-btn').wait_until_present

if browser.text.include? 'Hemanth'
  puts 'Testcase04 pass : ***Login successfull'
else
  puts '***Error in Login'
end

现在它完成了单个用户名和密码的工作,我需要循环它以检查4个测试用例?我的意思是我需要为上面的脚本传递用户名和密码的4种组合。我怎么能这样做?

这是测试用例 testcase用户名密码登录
tc_yahoo_login_01 abcd xyz123是的 tc_yahoo_login_02 abcde abcd123 false
tc_yahoo_login_03 abc123是真的 tc_yahoo_login_04 abcd true
tc_yahoo_login_05 abcd abcd123 false
这些是我需要实现的测试用例,只有成功登录才会发生。你知道我想要得到什么输出吗?

1 个答案:

答案 0 :(得分:0)

下面的代码创建了一个名为hash的用户(包含用户名/密码),启动浏览器,遍历哈希,并打印每个键/值对的键和值:

require 'watir-webdriver'
users = {"user_one" => "password", "user_two" => "password"}

b = Watir::Browser.new 
b.goto('http://www.example.org')
users.each do |key, value|
  puts key
  puts value
  b.refresh
end

#=> user_one
#=> password
#=> user_two
#=> password

要使用符号作为哈希键,您可以执行相同的操作,但将键转换为字符串:

users = {user_one: "password", user_two: "password"}

b = Watir::Browser.new 
b.goto('http://www.example.org')
users.each do |key, value|
  puts key.to_s                    # convert symbol to string
  puts value
  b.refresh
end

一个有效的演示:

require 'watir-webdriver'
users = {sample: "sample", sample1: "sample1", sample2: "sample2"} # hash of users
b = Watir::Browser.new                                             # launch browser
b.goto('https://foodclub.org/sample/login')
users.each do |key, value|                                         # iterate on hash
  b.text_field(name: "user_id").set  key.to_s                      # set key as username
  b.text_field(name: "password").set value                         # set value as password
  b.button(name: "login").click
  b.link(text: "Logout").click
end