Behave 简明教程
Behave - Enumeration
枚举用于将基于多个独特字符串的单词映射到值。
我们可能需要具有以下特征的用户定义数据类型 −
-
必须匹配少量单词。
-
在测试执行前进行预定义值。
对于以上场景,可以使用基于字符串的枚举。
Feature File
考虑一个针对名为 payment process 的功能的功能文件,如下所示 −
Feature − Payment Process
Scenario − Response
When User asks "Is payment done?"
Then response is "No"
在步骤实现文件中,TypeBuilder.make_enum 函数对提供的单词或字符串枚举求值为正则表达式模式。method register_type 用于注册一个用户定义类型,该类型可以在匹配步骤时被解析为任何类型转换。
此外,我们应传入参数:用“{}”括起来的用户定义枚举数据类型。
Corresponding Step Implementation File
以下是针对上述功能的步骤实现文件 −
from behave import *
from behave import register_type
from parse_type import TypeBuilder
# -- ENUM: Yields True (for "yes"), False (for "no")
parse_response = TypeBuilder.make_enum({"yes": True, "no": False})
register_type(Response=parse_response)
@when('User asks "{q}"')
def step_question(context, q):
print("Question is: ")
print(q)
@then('response is "{a:Response}"')
def step_answer(context, a):
print("Answer is: ")
print(a)
Output
运行功能文件后获得的输出如下。这里,我们使用了命令 behave --no-capture -f plain 。
输出显示 Is payment done? 和 False 。False 输出来自枚举数据类型。