Robert Klemme
3/26/2007 4:14:00 PM
On 26.03.2007 18:04, aidy wrote:
> Hi,
>
> I am trying to write a 'keyword-driven test automation framework' in
> Ruby.
>
> Using a case statement
>
> <snip>
> def field(name, args)
> case name
>
> when 'username'
> name='login'
>
> when 'password'
> name='password'
> end
>
> return $ie.text_field(:name, name).set(args)
>
> end
>
> def button(name)
> case name
>
> when 'login'
> name = 'Login'
>
> end
>
> return $ie.button(:value, name).click
>
> end
>
> <snip>
>
> Calling code
>
> <snip>
> field 'username', 'x@x.com'
> field 'password', 'password123'
> button 'login'
> <snip>
>
> I don't like it because
>
> 1. It is procedural
> 2. Lengthy switch statements may affect performance
>
> Could anyone suggest a way using, collections or symbols or something
> else?
This is an obvious case for Hash with a custom default value handler:
MAP_FIELD = Hash.new {|h,k| k}.update(
'username' => 'login'
)
def field(name,args)
$ie.text_field(:name, MAP_FIELD[name]).set(args)
end
....
Kind regards
robert