Begin Method

Applies to TestComplete 15.47, last modified on January 20, 2023

Description

You can mark arbitrary parts of script code as test cases. Such “test cases” will be included in the Summary report as a separate entry. You can also send the results of such “test cases” to an external test management system (for instance, Zephyr Squad).

The aqTestCase.Begin method sets the starting point for the code fragment you want to mark as a test case.

To set the ending point, use the aqTestCase.End method.

Declaration

aqTestCaseObj.Begin(TestName, ExternalTestCase)

aqTestCaseObj An expression, variable or parameter that specifies a reference to an aqTestCase object
TestName [in]    Required    String    
ExternalTestCase [in]    Optional    String Default value: Empty string   
Result None

Applies To

The method is applied to the following object:

Parameters

The method has the following parameters:

TestName

Specifies the name under which the code fragment will be added to the Summary report.

Note: The test engine does not check whether test cases with the same name already exist in your project suite. You can have multiple test cases with the same name.

ExternalTestCase

Specifies the name of the external test (for example, a Zephyr test case) to which you want to bind the results of the specified code fragment.

To bind test results to a Zephyr test case, specify the needed test case as follows:

zfj://<test_case_key>

Your project must be bound to a Jira project and the specified Zephyr case must exist in it. To learn more about TestComplete integration with Zephyr Squad and about binding TestComplete projects to Jira projects, see Integration With Zephyr Squad.

If the specified external test does not exist, an error will be posted to the TestComplete test log.

Result Value

None.

Remarks

  • The aqTestCase.Begin and aqTestCase.End methods do not allow creating nested test cases. The End method call must alway follow the Begin method call.

  • If you call the aqTestCase.Begin method without calling an accompanying aqTestCase.End method, TestComplete will treat all the executed code (from the aqTestCase.Begin method call to the end of the run) as a single test case.

    However, in this case, TestComplete will not send test results to an external test management system (if it is specified by the aqTestCase.Begin method’s ExternalTestCase parameter).

  • The aqTestCase.Begin and aqTestCase.End methods do not necessarily need to belong to the same routine. They can belong to different routines as long as the proper call order is kept: the routine that calls the aqTestCase.Begin method must run before the routine that calls the aqTestCase.End method.

  • To make sure that the ending point is always set properly in your test cases, we recommend that you use the Begin and End methods along with handling exception statements.

    Example

  • You can use the methods in data-driven tests to isolate individual iterations through a data source.

Example

The following sample code marks a part of the Main routine as the Create an order test:

JavaScript, JScript

function Main()
{
  var page = Aliases.browser.page;
  var panel = page.Aspnetform.panel;

  panel.Username.SetText("Tester");
  panel.Password.SetText("test");
  panel.submitbutton.Click();
  page.Wait();

  // Sets the beginning of the "Create an order" test
  aqTestCase.Begin("Create an order");
  try{

    page.Aspnetform.table.cell1.linkOrder.Click();
    page.Wait();

    var cell = page.Aspnetform.table.cell.panelContent.tableorder.cell;
    cell.selectProduct.ClickItem("ScreenSaver");
    …
    cell.panel.linkProcess.Click();

    page.Wait();
    page.Aspnetform.table.cell1.linkViewAllOrders.Click();
    page.Wait();

  }
  catch (e){
    …
  }

  finally{
    // Sets the end of the "Create order" test
    aqTestCase.End();
  }

  var table = page.Aspnetform.table.cell.panelContent.panel.table;
  table.Cell(1, table.ColumnCount(1) - 1).ImageButton(0).Click();
  page.Wait();

  …

  Aliases.browser.Close();
}

Python

def main():
  page = Aliases.browser.page 

  panel = page.Aspnetform.panel
  panel.Username.SetText("Tester")
  panel.Password.SetText("test")
  panel.submitbutton.Click()
  page.Wait()
  
  # Sets the beginning of the "Create an order" test
  aqTestCase.Begin("Create an order");
  try:
    page.Aspnetform.table.cell1.linkOrder.Click()
    page.Wait()

    cell = page.Aspnetform.table.cell.panelContent.tableorder.cell
    cell.selectProduct.ClickItem("ScreenSaver")
    #...
    cell.panel.linkProcess.Click()
  
    page.Wait()
    page.Aspnetform.table.cell1.linkViewAllOrders.Click()
    page.Wait()
  except Exception as e:
    #...
  finally:
    # Sets the end of the "Create order" test
    aqTestCase.End()
  
  table = page.Aspnetform.table.cell.panelContent.panel.table
  table.Cell(1, table.ColumnCount[1] - 1).ImageButton(0).Click()
  page.Wait()
  
  #...
  Aliases.browser.Close()

VBScript

Sub Main
  Dim page, table, settings
  Set page = Aliases.browser.page
  Dim panel
  Set panel = page.Aspnetform.panel
  Call panel.Username.SetText("Tester")
  Call panel.Password.SetText("test")
  Call panel.submitbutton.Click()
  Call page.Wait

  ' Sets the beginning of the "Create an order" test
  aqTestCase.Begin("Create an order")
  On Error Resume Next

    Dim cell
    Call page.Aspnetform.table.cell1.linkOrder.Click
    Call page.Wait

    Set cell = page.Aspnetform.table.cell.panelContent.tableorder.cell
    Call cell.selectProduct.ClickItem("ScreenSaver")
    …
    Call cell.panel.linkProcess.Click

    Call page.Wait
    Call page.Aspnetform.table.cell1.linkViewAllOrders.Click
    Call page.Wait

  If Err.Number <> 0 Then
    …
  End If
  ' Sets the end of the "Create order" test
  aqTestCase.End

  Set table = page.Aspnetform.table.cell.panelContent.panel.table
  Call table.Cell(1, table.ColumnCount(1) - 1).ImageButton(0).Click
  Call page.Wait

  …

  Call Aliases.browser.Close
End Sub

DelphiScript

procedure Main;
var page, panel, table, cell;
begin
  page := Aliases.browser.page;

  panel := page.Aspnetform.panel;
  panel.Username.SetText('Tester');
  panel.Password.SetText('test');
  panel.submitbutton.Click;
  page.Wait;

  // Sets the beginning of the "Create an order" test
  aqTestCase.Begin('Create an order');
  try
  begin
    page.Aspnetform.table.cell1.linkOrder.Click;
    page.Wait;
    cell := page.Aspnetform.table.cell.panelContent.tableorder.cell;
    cell.selectProduct.ClickItem('ScreenSaver');
    …
    cell.panel.linkProcess.Click;
    page.Wait;
    page.Aspnetform.table.cell1.linkViewAllOrders.Click;
    page.Wait;
  end;
  finally
    // Sets the end of the "Create order" test
    aqTestCase.End;
  end;
  table := page.Aspnetform.table.cell.panelContent.panel.table;
  table.Cell(1, table.ColumnCount[1] - 1).ImageButton(0).Click;
  page.Wait;

  …

  Aliases.browser.Close();
end;

C++Script, C#Script

function Main()
{
  var page = Aliases["browser"]["page"];
  var panel = page["Aspnetform"]["panel"];

  panel["Username"]["SetText"]("Tester");
  panel["Password"]["SetText"]("test");
  panel["submitbutton"]["Click"]();
  page["Wait"]();

  // Sets the beginning of the "Create an order" test
  aqTestCase["Begin"]("Create an order");
  try{

    page["Aspnetform"]["table"]["cell1"]["linkOrder"]["Click"]();
    page["Wait"]();

    var cell = page["Aspnetform"]["table"]["cell"]["panelContent"]["tableorder"]["cell"];
    cell["selectProduct"]["ClickItem"]("ScreenSaver");
    …
    cell["panel"]["linkProcess"]["Click"]();

    page["Wait"]();
    page["Aspnetform"]["table"]["cell1"]["linkViewAllOrders"]["Click"]();
    page["Wait"]();

  }
  catch (e){
    …
  }

  finally{
    // Sets the end of the "Create order" test
    aqTestCase["End"]();
  }

  var table = page["Aspnetform"]["table"]["cell"]["panelContent"]["panel"]["table"];
  table["Cell"](1, table["ColumnCount"](1) - 1)["ImageButton"](0)["Click"]();
  page["Wait"]();

  …

  Aliases["browser"]["Close"]();
}

See Also

aqTestCase Object
End Method
Summary Report
Integration With Zephyr Squad

Highlight search results