Skip to main content

PyCukes

PyCukes is a Cucumber-like BDD tool built on top of Pyhistorian. PyCukes was created to fill the gap pyhistorian left, so with it is possible to talk to your stakeholders first with text files, instead of simple understendable python files like Pyhistorian.

Usage

First, make sure you have installed story_runner, pyhistorian and pycukes. By default, if you just call pycukes from your command line into some dir, it will look for a stories dir (expecting your stories files are there) and then look for a step_definitions dir (expecting your step definitions are there). Each story file by convention ends with .story, like calculator.story and each step definition should end with steps.py, like calculator_steps.py.

So, lets say you have the directory tree:

|-- calculator
   `-- stories
       |-- calculator.story
       `-- step_definitions
           `-- calculator_steps.py

To run your stories, you can simple call:

$ pycukes

Or if you can specify exactly what stories run:

$ pycukes stories/calculator.story

Parameters

-s or --stories-dir  --  specify your stories directory
-t or --steps-dir  --  specify your step definitions directory
-n or --no-colors  --  tells pycukes not to show colored output
-c or --colored (default) -- tells pycukes to show colored output
-l or --language (en-us by default) -- specify your story language [en-us and pt-br are supported]

Real Example

Directory tree:

hugo@hugo-laptop:~/app$ tree
.
`-- stories
    |-- bowling_game.story
    `-- step_definitions
        `-- bowling_game_steps.py

Content of bowling_game.story file:

hugo@hugo-laptop:~/app$ cat stories/bowling_game.story
Story: Bowling Game
  As a bowling player
  I want to play bowling online
  So that I can play with everyone in the world

    Scenario 1: Gutter Game
      Given I am playing a bowling game
      When I hit no balls
      Then I have 0 points

Content of bowling_game_steps.py:

hugo@hugo-laptop:~/app$ cat stories/step_definitions/bowling_game_steps.py
from pycukes import *

class BowlingGame(object):
    score = 1
    def hit(self, balls):
        pass


@Given('I am playing a bowling game')
def start_game(context):
    context._bowling_game = BowlingGame()

@When('I hit no balls')
def hit_no_balls(context):
    context._bowling_game.hit(0)

@Then('I have 0 points')
def i_have_zero_points(context):
    assert context._bowling_game.score == 0

Running:

hugo@hugo-laptop:~/app$ pycukes stories/bowling_game.story
Story: Bowling Game
  As a bowling player
  I want to play bowling online
  So that I can play with everyone in the world

  Scenario 1: Gutter Game
    Given I am playing a bowling game   ... OK
    When I hit no balls   ... OK
    Then I have 0 points   ... FAIL

  Failures:
    File "stories/step_definitions/bowling_game_steps.py", line 19, in i_have_zero_points
      assert context._bowling_game.score == 0
    AssertionError


  Ran 1 scenario with 1 failure, 0 errors and 0 pending steps

Metadata

Release files for pycukes 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pycukes 0.2
File Size Uploaded Provenance
pycukes-0.2.tar.gz 10.5 kB Without provenance Details

Release files / pycukes-0.2.tar.gz

Download URL pycukes-0.2.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8794c599ebb28843c06784c3ebf991b2df6d5dafd10e67b78abf802ff515ce93
BLAKE2b-256 checksum
How to use checksums
891365de3c684e5c73bdcf484a0dae49752bb22b2e21d6aba3a3a9980bf75008
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for pycukes 0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page