Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to stop Robot Framework test execution if first testcase FAIL?

As shown in below robot file, I have three testcases. I want to stop the test execution, if TESTCASE1 fails. TESTCASE2 should be executed only if TESTCASE1 passes.

*** Settings ***

Library         pythonLib


*** Test cases ***

TESTCASE1
    boot device

TESTCASE2
    configure device

TESTCASE3
    restart device  

Is there any keyword or custom way to do this ?

like image 666
rcubefather Avatar asked Oct 24 '15 15:10

rcubefather


2 Answers

There are multiple ways to get the job done, each appropriate for different situations.

--exitonfailure

The command line option --exitonfailure aborts the test run after any testcase fails, unless it is marked noncritical.

Fatal Error

You might only want to abort if exactly TESTCASE1 fails. The Fatal Error keyword exist just for this purpose:

TESTCASE1
    ${passed}=  Run Keyword And Return Status  boot device
    Run Keyword If  not ${passed}  Fatal Error

If this seems clunky to you, you can throw fatal errors directly from Python/Java.

Suite Setup

These tools will get the job done, and are appropriate in some cases. Although in the asker's case, I observe:

  • The first testcase must pass for any other tests to run.
  • It runs a keyword called boot device.

To me that is not a testcase. That is a setup. If you need a setup to run once before a suite of testcases, you should specify it as a Suite Setup.

***Settings***
    Suite Setup    boot device
like image 72
TheHowlingHoaschd Avatar answered Sep 29 '22 02:09

TheHowlingHoaschd


There is a command line option for this, if you want the behavior that robot should stop running as soon as any test fails. This option is --exitonfailure. From the robot framework user guide, in a section titled Stopping when the first test fails:

If option --exitonfailure is used, test execution stops immediately if any critical test fails. Also the remaining tests are marked as failed.

You might also want to take a look at this answer to the question Automatic failing/non-execution of interdependent tests in Robot Framework, which shows how to write a keyword to implement dependencies between test cases.

like image 42
Bryan Oakley Avatar answered Sep 29 '22 03:09

Bryan Oakley