Behave - 可选部分
特征文件中的步骤可能具有几乎相似的短语。 Behave 具有解析能力,一步定义就可以涵盖这些步骤。 use_step_parser 方法用于此,我们必须将解析器类型作为参数传递给该方法。
对于扩展解析匹配器,我们必须传递参数 cfparse。 它具有基数字段 (CF) 支持。 默认情况下,它会为连接的基数生成缺少的类型转换器(如果给出了等于 1 的基数类型转换器)。
可以支持以下解析表达式 −
{values:Type+} – Cardinality=1..N, many
{values:Type*} – Cardinality=0..N, many0
{values:Type?} – Cardinality=0..1, optional
特征文件(步骤差不多)
步骤几乎相似的特征文件如下 −
Feature − Payment Process Scenario − Check Debit transactions Given user is on "debit" screen Scenario − Check Credit transactions Given user is on "credit" screen
register_type 方法用于注册一个用户定义的类型,该类型可以在匹配步骤时解析为任何类型转换。
对应步骤实现文件
步骤实现文件如下 −
from behave import * import parse #define parse type use_step_matcher("cfparse") # for whitespace characters @parse.with_pattern(r"x\s+") def parse_string(s): #type converter for "x" succeeded by single/multiple spaces return s.strip() #register user-defined datatype register_type(x_=parse_string) #optional part :x_? cardinality field in parse expression @given('user is on {:x_?}{payment} screen') def step_payment(context, x_, payment): print("Payment type: ") print(payment)
输出
运行特征文件后获得的输出如下所示,使用的命令是behave --no-capture -f plain。
输出显示debit(借方)和credit(贷方)。 这两个值已通过功能文件中几乎相似的步骤传递。 在步骤实现中,我们在解析表达式中用基数字段解析了这两个步骤。