Behave - 数据类型
Behave 中的数据类型有两种,Predefined和User-defined。 让我们首先了解什么是预定义数据类型。
Predefined 预定义数据类型
Behave 在步骤定义中使用解析模块来解析参数。 让我们探索一些支持步骤定义并且不需要像用户定义的数据类型那样注册的解析类型。
w(str 类型)− 下划线 & 字母。
W (str 类型) − 下划线 & 非字母。
s (str 类型) − 空格。
S (str 类型) − 非空白。
d (int 类型) − 数字。
D (str 类型) − 非数字。
n (int type) − 具有千位分隔符的数字。
% (float 类型) − 百分比。 (翻译成值/100.0)
f (float 类型) − 固定和小数点数。
e (float 类型) − 带有指数的浮点数和小数点数。
g (float 类型) − 数字格式。
b (int 类型) − 二进制数。
(int 类型) − 八进制数字。
x (int 类型) − 十六进制数字。
ti (datetime 类型) − ISO 8601 日期/时间格式的时间。
te (datetime 类型) − RFC 2822 电子邮件数据/时间格式的时间。
tg (datetime 类型) − 全球数据/时间格式的时间。
ta (datetime 类型) − 美国数据/时间格式的时间。
tc (datetime 类型) − ctime() 数据/时间格式。
th (datetime 类型) − HTTP 日志数据/时间格式的时间。
tt (time 类型)
在步骤实现中,我们要传递参数:数据类型,用"{}"括起来。
具有 % 数据类型的特征文件
% 数据类型的特征文件如下 −
Feature − Payment Process Scenario Outline: Credit card transaction Given user is on credit card payment screen When user makes a payment of "<p>" percent of total Examples: Amounts | p | |80% | |90% |
对应步骤实现文件
文件如下 −
from behave import * @given('user is on credit card payment screen') def credit_card_pay(context): print('User is on credit card payment screen') #passing parameter in % datatype enclosed in {} @when('user makes a payment of "{p:%}" percent of total') def step_impl(context, p): print('Number is: ') print(p)
输出
运行特征文件后获得输出,使用的命令是behave --no-capture -f plain。
持续输出如下 −
输出显示 0.8 和 0.9,这是从 % 数据类型中获得的,代表从特征文件传递的 80% 和 90% 值。
User-defined 用户定义的数据类型
Behave 也有用户定义的数据类型。 方法 register_type 用于注册一个用户定义的类型,该类型可以在匹配步骤时解析为任何类型转换。
特征文件
标题为payment process(支付流程)的特征文件如下 −
Feature − Payment Process Scenario Outline: Credit card transaction Given user is on credit card payment screen When user makes a payment of "<amount>" of total Examples: Amounts |amount | |75 | |85 |
在步骤实现中,我们要传递参数:用"{}"括起来的用户自定义数据类型。 方法 register_type 用于注册一个用户定义的类型,该类型可以在匹配步骤时解析为任何类型转换。
对应步骤实现文件
文件如下 −
from behave import * from behave import register_type #convert parsed text to float def parse_percent(t): return float(t) #register user-defined type register_type(Float=parse_percent) @given('user is on credit card payment screen') def credit_card_pay(context): print('User is on credit card payment screen') @when('user makes a payment of "{amount:Float}" of total') def step_impl(context, amount): print('Number is: ') print(amount)
输出
运行特征文件后获得输出,使用的命令是behave --no-capture -f plain。
继续输出如下 −
输出显示 75.0 和 85.0 已转换为浮点值(借助用户定义的转换)。 这些参数作为特征文件中的整数类型传递。