A nice fork of Aloe. Migrated from Nose to Pytest.
pytest-eucalyptus has been built to feature the best of both worlds:
- Aloe which implements great infrastructure and uses the original Gherkin parser.
- pytest-bdd does not require a separate runner and benefits from the power and flexibility of Pytest.
-
Create new module and add empty
__init__.py
. -
Install Pytest and Eucalyptus:
pip install pytest pytest-eucalyptus
-
Let's assume we are testing the following implementation of
calculator.py
:def add(*numbers): return sum(numbers)
-
Write your first feature
tests/calculator.feature
:Feature: Add up numbers As a mathematically challenged user I want to add numbers So that I know the total Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 30 into the calculator When I press add Then the result should be 80 on the screen
-
Add the definitions in
tests/conftest.py
:from calculator import add from pytest_eucalyptus import before, step, world @before.each_example def clear(*args): """Reset the calculator state before each scenario.""" world.numbers = [] world.result = 0 @step(r'I have entered (\d+) into the calculator') def enter_number(self, number): world.numbers.append(float(number)) @step(r'I press add') def press_add(self): world.result = add(*world.numbers) @step(r'The result should be (\d+) on the screen') def assert_result(self, result): assert world.result == float(result)
-
Run the code
$ pytest
============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-4.6.3, py-1.8.0, pluggy-0.12.0
rootdir: /Users/eucalyptus-user/src/test
plugins: eucalyptus-0.3.0
collected 1 item
calculator.feature . [100%]
=========================== 1 passed in 0.01 seconds ===========================
Please find more docs here.
Pytest-Eucalyptus is licensed under the Apache License 2.0 – see the LICENSE.md for specific details.