Skip to main content

Type-safe, YAML-based BDD, TDD & specification by example framework for python.

Project description

HitchStory is a python 3 library for building BDD-style executable specifications.

It is currently in ALPHA. APIs may change without warning until version >= 1.0.

Example

email.story:

Log in:
  with:
    name: AzureDiamond             # default parameters for story
    password: hunter2
  given:
    website: /login                # preconditions
  steps:
    - Fill form:
        username: (( name ))       # parameterized steps
        password: (( password ))
    - Click: login


Send email:
  based on: log in                 # inherits from and continues from test above
  steps:
    - Click: new email
    - Fill form:
        to: Cthon98@aol.com
        contents: |                # long form text
          Hey guys,

          I think I got hacked!
    - Click: send email
    - Email was sent

Corresponding python execution engine:

from hitchstory import BaseEngine, StoryCollection
from tellurium import CyberDriver
from emailchecker import email_was_sent

class Engine(BaseEngine):
    def set_up(self):
        self.driver = CyberDriver()
        self.driver.visit(
            "http://localhost:5000{0}".format(self.given['website'])
        )

    def fill_form(self, **textboxes):
        for name, contents in textboxes.items():
            self.driver.fill_form(name, contents)

    def click(self, name):
        self.driver.click(name)

    def email_was_sent(self):
        email_was_sent()

This runs the story:

>>> StoryCollection(["email.story"], Engine()).named("Send email").play()

Install

To install:

$ pip install hitchstory

Tell me more

HitchStory is a YAML based DSL for writing stories that is designed primarily to be ergonomic for developers and only incidentallybusiness readable”.

By ergonomic for programmers, I mean:

  • Stories can and should inherit from one another, because specifications ought to be DRY too.

  • Stories are defined and validated using strongly typed StrictYAML. Step arguments and preconditions (‘given’) schemas can be defined by the programmer.

  • The execution engine can be programmed to rewrite the executing story based upon program behavior changes (e.g. screen output changes, labels on a web app change).

  • Running stories is done via a python API so you can easily write customized test workflows to suit your workflows.

  • Story parameterization is built in.

This library was dogfooded for years to BDD, test and autodocument a variety of different kinds of software - web apps, python libraries, command line apps.

Why not X instead?

  • Why not just write unit tests (e.g with py.test)?

  • Why not use Cucumber / Behat / Lettuce / pytest-bdd?

  • Why not use robot framework?

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

hitchstory-0.8.1.tar.gz (14.2 kB view details)

Uploaded Source

File details

Details for the file hitchstory-0.8.1.tar.gz.

File metadata

  • Download URL: hitchstory-0.8.1.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hitchstory-0.8.1.tar.gz
Algorithm Hash digest
SHA256 21d0a00ce719694f08092296ec7c27221b47dd2a97b3732a338fca7ed4b47e6d
MD5 73709f1d7caceb67c0283fb2fcacb54b
BLAKE2b-256 74a3cea2fa616f94011bd6aa1151013b4e4808f26c63023f6109e1eb7b741368

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page