- Behave教程
- Behave - 主页
- Behave - 简介
- Behave - 安装
- Behave - 命令行
- Behave - 配置文件
- Behave - 功能测试设置
- Behave - 小Cucumber关键词
- Behave - 功能文件
- Behave - 步骤实施
- Behave - 第一步
- Behave - 支持的语言
- Behave - 步骤参数
- Behave - 场景大纲
- Behave - 多行文本
- Behave - 设置表
- Behave - 一步一步
- Behave - 背景
- Behave - 数据类型
- Behave - 标签
- Behave - 枚举
- Behave - 步骤匹配器
- Behave - 正则表达式
- Behave - 可选部分
- Behave - 多种方法
- Behave - 阶跃函数
- Behave - 步骤参数
- Behave - 运行脚本
- Behave - 排除测试
- Behave - 重试机制
- Behave - 报告
- Behave - 钩子
- Behave - 调试
- Behave有用的资源
- Behave - 快速指南
- Behave - 有用的资源
- Behave - 讨论
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)
输出
运行功能文件后获得的输出如下所示,使用的命令是beeve --no-capture -f plain。
输出显示购买的物品及其数量。这两个值在特征文件中通过几乎相似的步骤(但数据类型不同)传递。在步骤实现中,我们使用了多种方法来获取值。