Behave - 数据类型



Behave 中有两种数据类型,分别是预定义和用户自定义。让我们首先了解什么是预定义数据类型。

预定义数据类型

Behave 利用 parse 模块解析步骤定义中的参数。让我们探索一些对步骤定义有支持且不需要像用户定义数据类型那样注册的解析类型。

  • w(str 类型) - 下划线和字母。

  • W(str 类型) - 下划线和非字母。

  • s(str 类型) - 空格。

  • S(str 类型) - 非空格。

  • d(int 类型) - 数字。

  • D(str 类型) - 非数字。

  • n(int 类型) - 带有千位分隔符的数字。

  • %(float 类型) - 百分比。(转换为 value/100.0)

  • f(float 类型) - 定点数字。

  • e(float 类型) - 浮点数以及指数。

  • g(float 类型) - 数字格式。

  • b(int 类型) - 二进制数。

  • o(int 类型) - 八进制数。

  • x(int 类型) - 十六进制数。

  • ti(datetime 类型) - ISO 8601 日期/时间格式的时间。

  • te(datetime 类型) - RFC 2822 电子邮件日期/时间格式的时间。

  • tg(datetime 类型) - 全球日期/时间格式的时间。

  • ta(datetime 类型) - 美国日期/时间格式的时间。

  • tc(datetime 类型) - ctime() 日期/时间格式。

  • th(datetime 类型) - HTTP 日志日期/时间格式的时间。

  • tt(time 类型)

在步骤实现中,我们将传递参数:用“{}”括起来的数据类型。

带有 % 数据类型的特性文件

带有 % 数据类型的特性文件如下所示:

Feature − Payment Process
   Scenario Outline: Credit card transaction
   Given user is on credit card payment screen
   When user makes a payment of "<p>" percent of total
   Examples: Amounts
      | p      |
      |80%     |
      |90%     |

相应的步骤实现文件

文件如下所示:

from behave import *
@given('user is on credit card payment screen')
def credit_card_pay(context):
   print('User is on credit card payment screen')
#passing parameter in % datatype enclosed in {}
@when('user makes a payment of "{p:%}" percent of total')
def step_impl(context, p):
   print('Number is: ')
   print(p)

输出

运行特性文件后获得输出,使用的命令为behave --no-capture -f plain

Pre-defined Data types

输出如下所示:

Data Types

输出显示 0.8 和 0.9,这是从 % 数据类型获得的,用于表示从特性文件中传递的 80% 和 90% 值。

用户自定义数据类型

Behave 还具有用户自定义数据类型。register_type 方法用于注册用户定义的类型,该类型可以在匹配步骤时解析任何类型转换。

特性文件

名为支付流程的特性文件的特性文件如下所示:

Feature − Payment Process
   Scenario Outline: Credit card transaction
      Given user is on credit card payment screen
      When user makes a payment of "<amount>" of total
      Examples: Amounts
         |amount  |
         |75      |
         |85      |

在步骤实现中,我们将传递参数:用“{}”括起来的用户定义数据类型。register_type 方法用于注册用户定义的类型,该类型可以在匹配步骤时解析任何类型转换。

相应的步骤实现文件

文件如下所示:

from behave import *
from behave import register_type
#convert parsed text to float
def parse_percent(t):
   return float(t)
#register user-defined type
register_type(Float=parse_percent)
@given('user is on credit card payment screen')
def credit_card_pay(context):
   print('User is on credit card payment screen')
@when('user makes a payment of "{amount:Float}" of total')
def step_impl(context, amount):
   print('Number is: ')
   print(amount)

输出

运行特性文件后获得输出,使用的命令为behave --no-capture -f plain

User-defined Data types

输出如下所示:

Float   0
 Values

输出显示 75.085.0,它们已转换为浮点值(借助用户定义的转换)。这些参数作为整数类型从特性文件中传递。

广告

© . All rights reserved.