Behave 多种方法
功能文件中的步骤可能具有几乎相似的短语。例如,
Given user makes payment of 100 INR And user makes payment of 10 Dollar
在这里,我们可以有不同的步骤定义来区分 INR 和 Dollar。为此,我们可以使用多方法方法,其中必须为不同的数据类型使用不同的正则表达式。
特征文件(几乎类似的步骤)
考虑下面给出的特征文件:
Feature: Multi-Methods Scenario: Purchase Given User is on shop When user purchases 3 shirts And user purchases 4 pants
在步骤实现文件中, TypeBuilder.make_choice 函数为提供的选项评估正则表达式模式。方法 register_type 用于注册一个用户定义的类型,该类型可以在匹配步骤时被解析为任何类型转换。
此外,我们将传递参数:包含在“{}”中的用户定义数据类型。
对应步骤实现文件
步骤实现文件如下:
from behave import * from behave import register_type from parse_type import TypeBuilder parse_dress = TypeBuilder.make_choice(["shirts", "t-shirts"]) #register user-defined datatype register_type(Dress=parse_dress) parse_pant = TypeBuilder.make_choice(["pants", "gowns"]) #register user-defined datatype register_type(Pant=parse_pant) @given("User is on shop") def step_user_shop(context): pass # multiple methods being used . @when(u"user purchases {count:n} {d:Dress}") def step_dress(context, count, d): print("User purchased: ") print(d) print("Count is:") print(count) @when(u"user purchases {count:n} {p:Pant}") def step_pant(context, count, p): print("User purchased: ") print(p) print("Count is:") print(count)
运行特征文件后得到的输出如下所示,使用的命令是 Behave --no-capture -f plain .
输出显示采购项目及其数量。这两个值在特征文件中以几乎相似的步骤(但不同的数据类型)传递。在步骤实现中,我们使用了多种方法来获取值。