Forum Discussion

ml's avatar
ml
Contributor
8 years ago

OnStopTest & Sys.Shutdown on last Test Item

hello,

i need some help with scripting. i want that my local computer is shutting down when the last project item is finished. i got this so far (i have to name the last test in project items list - not really what i want - it differs which one is last).

procedure shutdown_OnStopTest(Sender);
 begin
  if (Project.TestItems.Current.Name = 'last_test') then
   begin
    Sys.Shutdown;
   end;
 end;

 

5 Replies

  • Manfred_F's avatar
    Manfred_F
    Regular Contributor

    shutting down the machine (= killing the context) from within an Event procedure may lead to unexpected results.

     

    I'd feel better with this:

    - Trigger an external script which shuts down the machine asynchronously after some delay (10 min?).

    This will give TC the Chance to end the test run as planned, write the logs and so on, without being forced to shut down by the OS

  • AlexKaras's avatar
    AlexKaras
    Champion Level 3

    Hi,

     

    I would be second to Manfred.

     

    Additionally: In general, it is near to impossible in TestComplete to figure-out from test code if the given test item is the last one that is going to be executed or not. Thus, it is more safe and reliable to shut down the box via some external action triggered when the test run is over.

  • shankar_r's avatar
    shankar_r
    Community Hero

    OnStopTest is usually will come to picture once after all test items or scripts or whatever Test Complete executing  are completed.

     

    As per my point, You don't need to give any kind of if condition in the event handler.

    • tristaanogre's avatar
      tristaanogre
      Esteemed Contributor

      Actually, the onstoptest will fire upon the ending of any item listed as a "Test Item" in the project test items panel.

       

      I think that you can check to see what the index of the current test item is, check that against the total number of test items, and from there determine if it's the last one.

  • ml's avatar
    ml
    Contributor

    ok i see,

    the code i posted above is for hardcoded testname only. it works fine so far.

     

    but if i want a system shutdown after the last test item in list finished, i will use the way tristaanogre described:

    1. get test.items & check if enabled
    2. if enabled: count them
    3. get name from last enabled one & compare to current
    4. if last enabled = current then sys.shutdown

    when i´m done i will posting the code here. maybe someone will need it in the future again :)