Skip to content

Arguments are fed to steps in a way that is largely consistent with how python methods work:

  • Named arguments are put in equivalent slugified variables (e.g. "How many times" -> "how_many_times") - demonstrated in the click step below.
  • If the method has **kwargs then the key names of kwargs will match the named arguments exactly - demonstrated in the fill_form step below.

@validate is used with StrictYAML validators to validate the type of the steps. You can see more about this in strong typing.

Code Example

engine.py:

from code_that_does_things import *
from strictyaml import Int, Str, Bool
from hitchstory import BaseEngine, validate

class Engine(BaseEngine):
    def fill_form(self, **kwargs):
        for name, content in kwargs.items():
            fill_form(name, content)

    @validate(what=Str(), how_many_times=Int(), double_click=Bool())
    def click(self, what, how_many_times=1, double_click=False):
        for _ in range(how_many_times):
            click(what)

With code:

from hitchstory import StoryCollection
from engine import Engine
from pathlib import Path

kwargs

example.story:

Login:
  steps:
    - Fill form:
        login username: john
        login password: hunter2
StoryCollection(Path(".").glob("*.story"), Engine()).named("Login").play()

Will output:

RUNNING Login in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

Then the form is filled with:

  • login username: john

  • login password: hunter2

optional args single argument

example.story:

Click button:
  steps:
    - Click: my button
StoryCollection(Path(".").glob("*.story"), Engine()).named("Click button").play()

Will output:

RUNNING Click button in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

optional args fewer than the maximum arguments

example.story:

Click button:
  steps:
    - Click:
        what: my button
        how many times: 2
StoryCollection(Path(".").glob("*.story"), Engine()).named("Click button").play()

Will output:

RUNNING Click button in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

Executable specification

Documentation automatically generated from arguments.story storytests.