Behave 简明教程

Behave - Multi-Methods

也许在功能文件中具有短语类似的步骤。例如,

Given user makes payment of 100 INR
And user makes payment of 10 Dollar

在这里,我们可以有不同的步骤定义来区分 INR 和美元。为此,我们可以使用多方法方法,必须对不同的数据类型使用不同的正则表达式。

Feature File (almost similar steps)

将功能文件视为如下内容:

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 方法用于注册用户自定义类型,该类型可以在步骤匹配时解析为任何类型转换。

此外,我们将传入参数:用 “{}” 括起来的自定义数据类型。

Corresponding Step Implementation File

步骤实现文件如下所示 −

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)

Output

运行功能文件后获得的输出如下,使用的命令是 behave --no-capture -f plain

multi methods

输出显示购买项目及其数量。在功能文件中几乎使用类似的步骤(但不同的数据类型)传递了这两个值。在步骤实现中,我们使用多种方法来获取值。