subplot 0.4.3

tools for specifying, documenting, and implementing automated acceptance tests for systems and software
Documentation
#############################################################################
# Functions that implement steps.

{% for func in functions %}
#----------------------------------------------------------------------------
# This code comes from: {{ func.source }}

{{ func.code }}
{% endfor %}


#############################################################################
# Scaffolding for generated test program.

{% include "context.py" %}
{% include "encoding.py" %}
{% include "files.py" %}
{% include "asserts.py" %}
{% include "scenarios.py" %}
{% include "main.py" %}


#############################################################################
# Test data files that were embedded in the source document. Base64
# encoding is used to allow arbitrary data.

{% for file in files %}
# {{ file.filename }}
filename = decode_str('{{ file.filename | base64 }}')
contents = decode_bytes('{{ file.contents | base64 }}')
store_file(filename, contents)
{% endfor %}



#############################################################################
# Classes for individual scenarios.

{% for scenario in scenarios %}
#----------------------------------------------------------------------------
# Scenario: {{ scenario.title }}
class Scenario_{{ loop.index }}():
    def __init__(self):
        ctx = Context()
        self._scenario = Scenario(ctx)
        self._scenario.set_title(decode_str('{{ scenario.title | base64 }}'))
        {% for step in scenario.steps %}
        # Step: {{ step.text }}
        step = Step()
        step.set_kind('{{ step.kind | lower }}')
        step.set_text(decode_str('{{ step.text | base64 }}'))
        step.set_function({{ step.function }})
        if '{{ step.cleanup }}':
            step.set_cleanup({{ step.cleanup }})
        self._scenario.append_step(step)
        {% for part in step.parts %}{% if part.CapturedText is defined -%}
        name = decode_str('{{ part.CapturedText.name | base64 }}')
        text = decode_str('{{ part.CapturedText.text | base64 }}')
        step.set_arg(name, text)
        {% endif -%}
        {% endfor -%}
    {% endfor %}

    def get_title(self):
        return self._scenario.get_title()

    def run(self, datadir, extra_env):
        self._scenario.run(datadir, extra_env)
{% endfor %}

_scenarios = { {% for scenario in scenarios %}
    Scenario_{{ loop.index }}(),{% endfor %}
}


#############################################################################
# Call main function and clean up.
main(_scenarios)