Debugging the Python behave test
When writing an end-to-end test using behave, debugging can be a little tricky. If you want to add a break point with pdb
, you can provide a CLI flag behave --no-capture
.
For example, I have a behave scenario, my scenario
, in my test.feature
file like this
Feeature: Test my scenario
Scenario: my scenario
Given I have a text file
When I print "hello"
Then I should get "hello" printed
where And
step has a simple function to print hello and I want to add a break point for debugging.
from behave import when
@when("I print "{message}")
def print_hello(message):
import pdb
pdb.set_trace() # I want to add a break point in here (for whatever reason)
print("hello")
Simply running behave -n "my scenario"
won’t stop at the break point. Instead you have to add a flag --no-capture
, which tells behave
to stop capturing all ipdb stdout. So you run
behave -n "my scenario" --no-capture
which stops at pdb.set_trace()
break point.