Skip to main content

Scenario test generator

Project description

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

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

What are cricri prerequisites ?

python 3.4 or newer

How to install

$ pip install cricri

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://cricri.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.

Files for cricri, version 1.0b4
Filename, size File type Python version Upload date Hashes
Filename, size cricri-1.0b4.tar.gz (8.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page