behave uses the 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 |