Tests and Sub-Tests

The concept of Sub-Test is an organic way to organize the whole work with Tests in organic way. By having sub-tests one may meet one of the following goals:

  1. Create multiple test scenarios working with same set of Objects and Functions.
  2. Organize different test scenarios into a single workspace.
  3. Use Sub-test to make cross-browser tests.

We will consider each of described goals separately. The test containing the sub-test(s) we will call base or parent test.

Shared Object Repository and Shared Functions

In this case parent test contains all learned objects and user-defined functions.

subtestdependant

For example, the parent test may have objects User Name, Password, Sign On. And function

function Login(username, password)
{
   ...
}

SubTest1 may be used to check login with valid credentials, Main.js from SubTest1 looks like:

function Test(params)
{

   Login("validuser", "validpassword");

   // Now check that login is successful

   Tester.Assert("Login leads to welcome message: ", Global.DoWaitFor('Welcome_User'));

}

SubTest2 may be used to check login with invalid Credentials (i.e. it is a fail-test). Main.js from SubTest2 looks like:

function Test(params)
{

   Login("invaliduser", "invvalidpassword");

   // Now check that login is successfull

   Tester.Assert("Login leads to invalid user object: ", Global.DoWaitFor('Invalid_User'));

}

Function Login and objects Welcome_User and Invalid_User are defined in the parent test. The sub-tests are just implementing various scenarios for the same set of objects.

Local Object Repository and Local Functions

Each test has its own objects, functions and scenarios.

subtestworkspace

The usage of such an approach is well demonstrated by example. We created a test called SampleMaster and put all Rapise samples into it by using Add File context menu in the the Test Tree dialog. Finally the Files tree looks like:

subtest samplemaster tree

All tests in this tree are independent. We use the Sample Master to manage all the tests from a single environment.

Nested Sub-Tests

Sub-test may have its own nested sub-tests. In this example the parent test contains reference to CreateNewBook sub-test having Login and Logout sub-tests inside:

subtest nesting

Sub-Test Properties

Sub-test properties are available from the Tag property in the Properties pane:

subtest tagproperties

Sub-Test Context Menu

The following options are available in the context menu for each of the sub-tests:

sub-tests, context menu

  • Play: Execute selected sub-test
  • Record: Start recording into selected sub-test
  • Save: Save options of a sub-test
  • Show Objects: Show objects form a sub-test in the Object Tree
  • Rename: Rename this sub-test
  • Clone: Make a copy of the sub-test
  • Delete: Remove reference to a sub-test from its parent test  

%WORKDIR% and Frameworks

Test and sub-tests is a recommended way to set up test frameworks with Rapise. %WORKDIR% is set to the root test path and it is recommended to use it to refer to other tests or data files.

See sample framework https://github.com/Inflectra/rapise-framework-examples/tree/master/SpiraFriendlyWithRvlAndUserLib