Tuesday 7 August 2012

Datadriven Script (MonkeyTalk)


This basically requires three files all placed in the root folder of your MonkeyTalk Project.

1.  MonkeyTalk code script. This is the one where you all the automation code.
2.  A driver script. This script is the one which we will run to execute the test. This script just calls the main MonkeyTalk code script and passes a csv (comma separated value) file with it. Think of this script as a main method in a java class file which is invoked first and others are invoked as the thread of main method progresses
3. CSV file. This file contains all the arguments that you want to pass for each variable in the driven script. The order of the

Main MonkeyTalk code script (or the driven script) in MonkeyTalk form:-

Vars * Define user pass
Input username Tap
Input username EnterText ${user}
Input password EnterText ${pass}
Button LOGIN Verify LOGIN %thinktime=1000
Button LOGIN Tap
Label * Verify "Welcome, ${user}!" %thinktime=3000
Button LOGOUT VerifyNot LOGIN
Button LOGOUT Tap %thinktime=5000

Driver Script in MonkeyTalk form:-

Script <name_of_driven_script>.mt RunWith <name_of_csv_file>.csv

CSV file:-

user pass
username1, password1
username2, password2
username3, password3

Notice that the first line (row) in the CSV file is the variable name and the contents of second row are the values in the variable.

Iterations: The number of rows in the csv file is the number of times the script is iterated. So in this case the script is run 3 times. In the first iteration the csv file passes the value username1 to the user variable and password1 to pass variable and so on.

Variable initiation: It does not matter whether the declared variable in the driven script is initialized or not. Even if the declared variable is initialized with some value that value will be wiped of that variable during the first iteration and the new value as mentioned in the script will be assigned to the variable. This is based on the assumption that the declared variable is mentioned in the script.

Do I need mention all the variables in the csv file even if I don’t want to change their value in each iteration? No. Mention only that variable that you want to iterate in each iteration.

Leaving a blank value for a var in csv: Leaving a value blank for a variable in csv file leaves the variable empty (technically, null). Even if it is the second iteration the variable does not contain the value provided to it in the first iteration. This means that the var is wiped off even when there are not values to be assigned to it the second iteration.

Note: Just make sure that you hit the play or run button when you are using browsing the driver script and not the driven script.


Javascript form of the Monkey Script:-

load("libs/<monkey_project_name>.js");
<monkey_project_name>.<driven_script_name>.prototype.run = function(user, pass) {
                this.app.input("username").tap();
                this.app.input("username").enterText(user);
                this.app.input("password").enterText(pass);
                this.app.button("LOGIN").verify("LOGIN", {thinktime:"1000"});
                this.app.button("LOGIN").tap();
                this.app.label().verify("Welcome, " + user + "!", {thinktime:"3000"});
                this.app.button("LOGOUT").verifyNot("LOGIN");
                this.app.button("LOGOUT").tap({thinktime:"5000"});
};

No comments:

Post a Comment