Professional Documents
Culture Documents
Ruby Cheat Sheet: Scripting For Testers
Ruby Cheat Sheet: Scripting For Testers
Function calls
puts "hello" puts("hello") parentheses can sometimes be omitted. If you're not sure whether they're required, put them in. To be safe, put them in whenever the call is at all complicated. Even one as simple as this. umber)
assert_equal(5,
Variables
Ordinary ("local") variables are created through assignment: umber ! 5 Now the variable umber has the value 5. Ordinary variables begin with lowercase letters. After the first character, they can contain any alphabetical or numeric character. Underscores are helpful for making them readable: th"s_"s_my_#ar"able ! 5 A variable's value is gotten simply by using the name of the variable. The following has the value 10: umber $ th"s_"s_my_#ar"able
Scripting for Testers period is the object, in this case a string ("s"mo "). The method is up&ase. It capitalizes its object. Like functions, methods can have arguments. "bookkeeper"." &lu'e((%book%) returns true This method is true if its argument ('book') is a substring of You can also concatenate strings using the + operator. "'og" $ "house" returns "doghouse"
Conditionals (if)
") umber !! 5 puts "Su&&ess" else puts "*+,-.R/" e '
Put the "), else, and e ' on separate lines as shown. You don't have to indent, but you should.
Function definitions
'e) assert_equal(e0pe&te', a&tual) ") e0pe&te' 1! a&tual puts "*+,-.R/1" e ' e ' Functions can return values, and those values can be assigned to variables. The return value is the last statement in the definition. Here's a simple example: 'e) )"#e 5 e ' bo0 ! )"#e Note that no parentheses are required.
Box's value is 5.
Note that we didn't need to say )"#e(), as is required in some languages. You can put in the parentheses if you prefer. The value of the last statement is always the value returned by the function. Some people like to include a retur statement to make this clear, but it doesn't change how the function works. This does the same thing: 'e) )"#e retur 5 e '
Scripting for Testers Here's a little more complicated example: 'e) make_pos"t"#e( umber) ") umber 2 3 - umber else umber e ' e ' #ar"able ! make_pos"t"#e(-5) #ar"able ! make_pos"t"#e()"#e) Variable's value is 5. Variable's value is 5.
Libraries
Libraries contain functions or methods that can be used in many Ruby programs. Suppose we store the make_pos"t"#e function defined above in a file called mathplus.rb. To use it in another script, we must require it: requ"re %mathplus% This will cause Ruby to search its loadpath for a file named mathplus.rb. (It will automatically add the '.rb'.) It will search the directories that normally contain Ruby libraries, as well as the current directory (typically the same directory as your script). If your library is in a location that Ruby doesn't know about, you will need to change the loadpath: 4-5+6_P+7H 22 %&89my_l"b9% Make sure you include this line before you require libraries in it.
Arrays
This is an array with nothing in it: :; This is an array with two numbers in it: :<, =; This is an array with two numbers and a string in it. You can put anything into an array. :<, %hello1%, ==3; Here's how you get something out of an array: array ! :<, %hello%, ==3; array:3; value is 1 Here's how you get the last element out: array:=; value is 220 Here's another way to get the last element:
Scripting for Testers array.last Here's how you change an element: array:3;! %boo1% How long is an array? array.le gth
array.push(%)re'%)
hello ! 220"
Iteration
When you do something multiple times, it is called iteration. There are many ways to do this. The following will print "hello" five times: 5.t"me 'o puts %hello% e ' Here's one way to print the numbers from one to 10: )or 0 " <..<3 'o puts 0 e ' And here's another: <..<3.ea&h 'o >0> puts 0 e ' The part between the 'o and the e ' is called a block. You can replace the 'o and e ' with braces: <..<3.ea&h ? >0> puts 0 @ The <..<3 is a range, which works like an array of the numbers from 1 to 10. The ea&h is a method that iterates through each element of the range. It is called an iterator. This prints each value of an array: :"a", "b", "&";.ea&h ? >0> puts 0 @ What if you want to transform each element of an array? The following capitalizes each element of an array. :"h"", "there";.collect ? >Aor'> Aor'.&ap"tal"Be @ The result is :"H"", "7here";.
Regular expressions
Regular expressions are a useful feature common to many languages. They allow you to match patterns in strings. Regular expressions are characters surrounded by 99 or Cr?@. A regular expression is compared to a string like this: regex% !D stri&g Most characters in a regular expression match the same character in a string. So, these all match: 9a9 !D %a str" g% 9a9 !D %str" g me alo g% This also matches: 9as9 !D %a str" g A"th astou '" g le gth% Notice that the regular expression can match anywhere in the string. If you want it to match only the beginning of the string, start it with a caret: 9Eas9 !D %alas, o mat&h% If you want it to match at the end, end with a dollar sign: 9 o49 !D % o mat&h, alas% If you want the regular expression to match any character in a string, use a period: 9E.s9 !D "+s ") , '"' %t k oA better1" There are a number of other special characters that let you amazing and wonderful things with strings. Ruby uses the standard syntax for regular expressions used in many scripting languages. See Programming Ruby for more information about regular expressions.
Scripting for Testers purposes of an ") statement. So match results like 3 and <3 count as true.
Blocks
A block is like a function without a name. It contains a set of parameters and one or more lines of code. Blocks are used a lot in Ruby. Iterators like ea&h use blocks. Heres how to search an array for an element: gems ! :%emeral'%, %pearl%, %ruby%; gems.'ete&t ? >gem> 9Er9 !D gem @ returns "ruby"
The 'ete&t method takes a block as an argument. This block returns true if the first argument starts with an r . !Actually it returns "# which counts as true.$ The 'ete&t method itself returns the first element for which its block is true. %hen blocks are longer than one line# they are usually written using 'o and e '. This is another way of writing the same code: gems.'ete&t 'o >gem> 9Er9 !D gem e '
Dictionaries
A dictionary lets you say "Give me the value corresponding to key." Dictionaries are also called hashes or associative arrays. Here's how you create a dictionary: '"&t ! ?@ Here's how you associate a value with a key: '"&t:%bret%; ! %te0as% looks a lot like an array, except that the key doesn't have to be a number. value is texas'. value is 1 value is the Array [ texas ". value is the Array [ bret ".
Here's how you retrieve a value, given a key: '"&t:%bret%; '"&t.le gth What values does a dictionary have? '"&t.#alues What keys does it have? '"&t.keys Here's how you ask how many key/value pairs are in the dictionary: