Predefined Data Types in parseΒΆ

https://pypi.python.org/pypi/behave uses the https://pypi.python.org/pypi/parse module (inverse of Python string.format) under the hoods to parse parameters in step definitions. This leads to rather simple and readable parse expressions for step parameters.

# -- FILE: features/steps/type_transform_example_steps.py
from behave import given

@given('I have {number:d} friends')  #< Convert 'number' into int type.
def step_given_i_have_number_friends(context, number):
    assert number > 0
    ...

Therefore, the following parse types are already supported in step definitions without registration of any user-defined type:

Type

Characters Matched

Output Type

w

Letters and underscore

str

W

Non-letter and underscore

str

s

Whitespace

str

S

Non-whitespace

str

d

Digits (effectively integer numbers)

int

D

Non-digit

str

n

Numbers with thousands separators (, or .)

int

%

Percentage (converted to value/100.0)

float

f

Fixed-point numbers

float

e

Floating-point numbers with exponent e.g. 1.1e-10, NAN (all case insensitive)

float

g

General number format (either d, f or e)

float

b

Binary numbers

int

o

Octal numbers

int

x

Hexadecimal numbers (lower and upper case)

int

ti

ISO 8601 format date/time e.g. 1972-01-20T10:21:36Z

datetime

te

RFC2822 e-mail format date/time e.g. Mon, 20 Jan 1972 10:21:36 +1000

datetime

tg

Global (day/month) format date/time e.g. 20/1/1972 10:21:36 AM +1:00

datetime

ta

US (month/day) format date/time e.g. 1/20/1972 10:21:36 PM +10:30

datetime

tc

ctime() format date/time e.g. Sun Sep 16 01:03:52 1973

datetime

th

HTTP log format date/time e.g. 21/Nov/2011:00:07:11 +0000

datetime

tt

Time e.g. 10:21:36 PM -5:30

time