Skip to main content

System test framework with serial and parallel execution.

Project description

buildstatus

Installation

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.

This framework is created with integration/system test in mind. The framework is not intended as a replacement for unittest, but rather to be a complement to it.

Documentation: http://systest.readthedocs.org/en/latest

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.

import logging
from systest import TestCase, Sequencer, configure_logging

LOGGER = logging.getLogger(__name__)

# Define a testcase.
class MyTestCase(TestCase):
    """Test case description.

    """

    def __init__(self, name):
        super(MyTestCase, self).__init__()
        self.name = "my_testcase_" + name

    def run(self):
        LOGGER.info("Hello!")
        self.assert_equal(1, 1)
        self.assert_true(1 == 1)
        self.assert_in(1 in [1, 2])
        self.assert_none(None)

        with self.assert_raises(RuntimeError) as cm:
            raise RuntimeError('foo')

        self.assert_equal(str(cm.exception), 'foo')

# Configure the logging module.
configure_logging()

sequencer = Sequencer("my_sequence")

# Run the sequence.
sequencer.run([
        MyTestCase("1"),
        (
            MyTestCase("2"),
            [
                MyTestCase("3"),
                MyTestCase("4")
            ]
        ),
        MyTestCase("5")
    ])

# Print the report.
sequencer.report()

The output is:

Name: my_sequence
Date: 2016-02-02 18:42:40.446213
Node: erik-VirtualBox
User: erik

---------------------------------------------------------------

Name: my_testcase_1
Description:

    Test case description.

Hello!

my_testcase_1: PASSED in 0m 0s

---------------------------------------------------------------

Name: my_testcase_2
Description:

    Test case description.

Hello!

my_testcase_2: PASSED in 0m 0s

---------------------------------------------------------------

Name: my_testcase_3
Description:

    Test case description.

Hello!

my_testcase_3: PASSED in 0m 0s

---------------------------------------------------------------

Name: my_testcase_4
Description:

    Test case description.

Hello!

my_testcase_4: PASSED in 0m 0s

---------------------------------------------------------------

Name: my_testcase_5
Description:

    Test case description.

Hello!

my_testcase_5: PASSED in 0m 0s

---------------------- Test summary 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
Result: PASSED (passed: 5, failed: 0, skipped: 0, xpassed: 0, xfailed: 0)

----------------------- Test summary end -----------------------

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

systest-5.7.0.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

systest-5.7.0-py2.py3-none-any.whl (10.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file systest-5.7.0.tar.gz.

File metadata

  • Download URL: systest-5.7.0.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for systest-5.7.0.tar.gz
Algorithm Hash digest
SHA256 4fc284010ce210f892aafd3d555b07045ed3266fe8d018f48de33df2c1a4e337
MD5 fa23fbb2189fcf28256e572d72ea9fdc
BLAKE2b-256 c15f4648a4554edabe6213af62e83c9b1bdc97b53def9322cc72a19cfba8cada

See more details on using hashes here.

File details

Details for the file systest-5.7.0-py2.py3-none-any.whl.

File metadata

  • Download URL: systest-5.7.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for systest-5.7.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 dfbd427d8e5640ce0f1237b8a2c7725f3e641c0d812cb1162a4862f1811e12d7
MD5 508e97a18dccd6d15215153cafdc699d
BLAKE2b-256 95d7cd55a5dc5906ee90f0823b863b65de868c22457b6f72406642a6c458e21d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page