The test module - Faber 1.0 documentation

###  |

# The test module

The test classes can be used to define and run tests, and generate test reports.

## synopsis

class `test`(name, sources, run=False, dependencies=[], features=(), condition=None, expected=1, module=None)

  A test is an artefact that is typically performed as part of a test suite, with special support to collect and report the test outcome.

  `__init__`(name, sources, run=False, dependencies=[], features=(), condition=None, expected=1, module=None)

    Create a test.

    Arguments:

      - name: the test's name

      - sources: artefact(s) to be tested

      - run: Specify what to do. Possible values:

        > - False (default): do nothing (but report whether source was updated successfully)
        > - True: Run sources
        > - an action: Perform action

      - depends: any prerequisite artefacts that have to be completed

      - features: additional features needed to perform this test

      - condition: either a boolean or a feature condition to indicate if this test is to be performed or skipped.

      - expected: the expected outcome

class `report`(name, tests, fail_on_failures=False)

  A test report runs a set of tests and reports a summary.

  `__init__`(name, tests, fail_on_failures=False)

    Construct a report. Arguments are the tests to be performed.

  `print_summary`(targets, sources)

    Print a summary of the report.

## Examples

    from faber.artefacts.binary import binary
    from faber.test import test, report, fail

    passing = binary('passing', 'passing.cpp')
    failing = binary('failing', 'failing.cpp')

    test1 = test('test1', passing, run=True)
    test2 = test('test2', failing, run=True)
    test3 = test('test3', failing, run=True, expected=fail)
    test4 = test('test4', failing, condition=False)

    r = report('test-report', [test1, test2, test3, test4])

Running faber test-report will perform the tests, print out individual results (e.g., 'PASS', 'FAIL', etc.), then print out a summary, such as:

    test summary: 1 pass, 1 failure, 1 expected failure, 1 skipped