Basic scenario with when/then and a JSON attachment
billing
happy-path
Given
a coffee machine
When
I insert $2
Then
I get a coffee
Plain text attachment
billing
Given
a coffee machine
When
I print the receipt
Then
the receipt is recorded verbatim
Generator fixture with teardown
Given
a database connection
When
I run a query
Then
the connection is open and the query was logged
T-string with a non-parametrize value (neutral highlight)
Given
a coffee machine
I have some coins in hand
When
I insert $5
Then
the machine has 9 coffees left
Helper functions can record their own steps
billing
Given
a coffee machine
When
I insert $2
Then
the coin is accepted
a coffee is dispensed
Top-level `given` block and deeply nested steps
billing
Given
a coffee machine
a loyalty card with 5 points
When
I place a large order
Then
the order is processed correctly
the machine state is consistent
Failure rendering (intentionally failing)
Given
a coffee machine
Then
the machine has 20 coffees
.nox/examples/Lib/site-packages/_pytest/runner.py:353: in from_call
result: TResult | None = func()
^^^^^^
.nox/examples/Lib/site-packages/_pytest/runner.py:245: in <lambda>
lambda: runtest_hook(item=item, **kwds),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/_pytest/logging.py:850: in pytest_runtest_call
yield
.nox/examples/Lib/site-packages/_pytest/capture.py:900: in pytest_runtest_call
return (yield)
^^^^^
.nox/examples/Lib/site-packages/_pytest/skipping.py:268: in pytest_runtest_call
return (yield)
^^^^^
.nox/examples/Lib/site-packages/_pytest/runner.py:179: in pytest_runtest_call
item.runtest()
.nox/examples/Lib/site-packages/_pytest/python.py:1720: in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
.nox/examples/Lib/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/_pytest/python.py:166: in pytest_pyfunc_call
result = testfunction(**testargs)
^^^^^^^^^^^^^^^^^^^^^^^^
src/pytest_given/capture/decorators.py:191: in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
examples/test_examples.py:143: in test_failing
assert machine['coffees'] == 20
E assert 10 == 20
Skipped scenario rendering
Skipped:
demonstrates skipped status
.nox/examples/Lib/site-packages/_pytest/runner.py:353: in from_call
result: TResult | None = func()
^^^^^^
.nox/examples/Lib/site-packages/_pytest/runner.py:245: in <lambda>
lambda: runtest_hook(item=item, **kwds),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:53: in run_old_style_hookwrapper
return result.get_result()
^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:38: in run_old_style_hookwrapper
res = yield
^^^^^
.nox/examples/Lib/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
yield
.nox/examples/Lib/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
return (yield)
^^^^^
.nox/examples/Lib/site-packages/_pytest/skipping.py:251: in pytest_runtest_setup
raise skip.Exception(skipped.reason, _use_item_location=True)
E Skipped: demonstrates skipped status
Parameterized test (renders as a parameter table)
billing
Given
a coffee machine
When
I insert ${euros}
Then
the purchase is allowed: {expect}
| euros | expect | status |
|---|---|---|
| 1 | False | ✓ |
| 2 | True | ✓ |
| 3 | True | ✓ |
Brew {cup_size} ml (templated scenario name)
billing
Given
a coffee machine
When
I brew a {cup_size} ml cup
Then
the machine has one fewer coffee
| cup_size | status |
|---|---|
| 200 | ✓ |
| 300 | ✓ |
All cases skipped
| n | status |
|---|---|
| 1 | ○ |
|
.nox/examples/Lib/site-packages/_pytest/runner.py:353: in from_call
result: TResult | None = func()
^^^^^^
.nox/examples/Lib/site-packages/_pytest/runner.py:245: in <lambda>
lambda: runtest_hook(item=item, **kwds),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:53: in run_old_style_hookwrapper
return result.get_result()
^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:38: in run_old_style_hookwrapper
res = yield
^^^^^
.nox/examples/Lib/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
yield .nox/examples/Lib/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
return (yield)
^^^^^
.nox/examples/Lib/site-packages/_pytest/skipping.py:251: in pytest_runtest_setup
raise skip.Exception(skipped.reason, _use_item_location=True) E Skipped: awaiting fixture |
|
| 2 | ○ |
|
.nox/examples/Lib/site-packages/_pytest/runner.py:353: in from_call
result: TResult | None = func()
^^^^^^
.nox/examples/Lib/site-packages/_pytest/runner.py:245: in <lambda>
lambda: runtest_hook(item=item, **kwds),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_hooks.py:512: in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:53: in run_old_style_hookwrapper
return result.get_result()
^^^^^^^^^^^^^^^^^^^
.nox/examples/Lib/site-packages/pluggy/_callers.py:38: in run_old_style_hookwrapper
res = yield
^^^^^
.nox/examples/Lib/site-packages/_pytest/logging.py:843: in pytest_runtest_setup
yield .nox/examples/Lib/site-packages/_pytest/capture.py:895: in pytest_runtest_setup
return (yield)
^^^^^
.nox/examples/Lib/site-packages/_pytest/skipping.py:251: in pytest_runtest_setup
raise skip.Exception(skipped.reason, _use_item_location=True) E Skipped: awaiting fixture |
|