Skip to main content

Scenario test generator

Project description

https://badge.fury.io/py/gentest.svg https://api.travis-ci.org/Maillol/scenario.svg?branch=master Documentation Status

Determine and write all possible test scenarios of finite state machines is a hard task. gentest generates test scenarios from state specification.

What are gentest prerequisites ?

python 3.4 or newer

How to install

$ pip install gentest

Example:

An example to test a state machine.

HTTPie compared to cURL

A is a initial state, call m1 shifts the state from A to B and call m2 shifts the state from A to C

We define each state using TestState subclass:

# Define a base class for scenario step.
class State(TestState):
    pass


class StateA(State, start=True): # start=True because A is initial state.
    def input(self):
        # code to go to initial state 'A'
        type(self).machine = Machine()

    def test_a(self):
        # You can use unittest assert methods.
        ...

class StateB(State, previous=['StateA']): # previous=['StateA'] because we can go to this state from 'A'
    def input(self):
        # code to go to 'B' state from 'A'
        type(self).machine.m1()

    def test_b(self):
        # You can use unittest assert methods.
        ...

# previous=['StateA', 'StateB'] because we can go to this state from 'A' or 'B'.
class StateC(State, previous=['StateA', 'StateB']):

    @previous(['StateA'])
    def input(self):
        # Code to go to 'C' state from 'A'
        type(self).machine.m2()

    @previous(['StateB'])
    def input(self):
        # Code to go to 'C' state from 'B'
        type(self).machine.m1()

    def test_c(self):
        # You can use unittest assert methods.
        ...


# You must to use this statment at the end of module to generate **load_tests** function::
load_tests = State.get_load_tests()

Call python3 -m unittest <test_module_name> to launch test.

This exemple generate two scenarios:

machine = Machine()
test_a()
machine.m1()
test_b()
machine.m1()
test_c()

and:

machine = Machine()
test_a()
machine.m2()
test_c()

For more example, see demo directory

Documentation:

Documentation is online at http://gentest.readthedocs.io

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

gentest-1.0b4.tar.gz (8.2 kB view hashes)

Uploaded Source

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