|buildstatus|_

Installation
============

.. code-block:: python

    pip install systest

Description
===========

Execute a sequence of test cases in serial and/or parallel.

Test cases in a list are executed in serial and test cases in a tuple
are executed in parallel in separate Python threads.

Example usage
=============

See the test suite: https://github.com/eerimoq/systest/blob/master/tests/test_systest.py

For example, the sequence below starts with test case
``MyTestCase("1")``. When ``MyTestCase("1")`` has been
executed, ``MyTestCase("2")`` and the list of
``MyTestCase("3")`` and ``MyTestCase("4")`` are executed
in parallel. When both ``MyTestCase("2")`` and the list
of ``MyTestCase("3")`` and ``MyTestCase("4")`` has been
executed, ``MyTestCase("5")`` is executed. Then the
sequence ends.

.. code-block:: python

   from systest import Sequence, TestCase

   class MyTestCase(TestCase):
       def __init__(self, name):
           super(MyTestCase, self).__init__()
           self.name = "my_testcase_" + name
       def run(self):
           self.log("Hello!")

   class MySequence(Sequence):
       def __init__(self):
           super(MySequence, self).__init__("my_sequence")
       def run(self):
           self.sequencer.run([
               MyTestCase("1"),
               (
                   MyTestCase("2"),
                   [
                       MyTestCase("3"),
                       MyTestCase("4")
                   ]
               ),
               MyTestCase("5")
           ])

   MySequence().execute()

The output is:

.. code-block:: text

   Name: my_sequence
   Date: 2016-02-02 18:42:40.446213
   Node: erik-VirtualBox
   User: erik
   ---------------------------------------------------------------
   Name: my_testcase_1
   Description:
   None
   2016-02-02 18:42:40.488127 my_testcase_1 Hello!
   
   my_testcase_1: PASSED in 0m 0s
   ---------------------------------------------------------------
   Name: my_testcase_2
   Description:
   None
   2016-02-02 18:42:40.490369 my_testcase_2 Hello!
   
   my_testcase_2: PASSED in 0m 0s
   ---------------------------------------------------------------
   Name: my_testcase_3
   Description:
   None
   2016-02-02 18:42:40.491976 my_testcase_3 Hello!
   
   my_testcase_3: PASSED in 0m 0s
   ---------------------------------------------------------------
   Name: my_testcase_4
   Description:
   None
   2016-02-02 18:42:40.494298 my_testcase_4 Hello!
   
   my_testcase_4: PASSED in 0m 0s
   ---------------------------------------------------------------
   Name: my_testcase_5
   Description:
   None
   2016-02-02 18:42:40.496103 my_testcase_5 Hello!
   
   my_testcase_5: PASSED in 0m 0s
   
   ---------------------- Test report begin ----------------------
   
   [
       [
           my_testcase_1: PASSED,
           (
               my_testcase_2: PASSED,
               [
                   my_testcase_3: PASSED,
                   my_testcase_4: PASSED
               ]
           ),
           my_testcase_5: PASSED
       ]
   ]
   
   Execution time: 0m 0s
   
   ----------------------- Test report end -----------------------

.. |buildstatus| image:: https://travis-ci.org/eerimoq/systest.svg
.. _buildstatus: https://travis-ci.org/eerimoq/systest
