Behave 设置表


一个步骤可以有一个与之关联的文本和数据表。我们可以添加一个带有步骤的数据表。建议将表格数据缩进,并且每行必须有相同的列号。

列数据应由 | 分隔象征。

带有表格的功能文件 (Login.feature)

特征文件如下:

Feature: User Information
Scenario: Check login functionality
    Given Collection of credentials
        | username |password |
        | user1    | pwd1    |
        | user2    | pwd2    |
    Then user should be logged in

具有上下文变量中的 .table 属性的实现 Python 代码可以访问一个表(在 step 函数中传递)。表是表的一个实例。我们可以使用设置表来方便设置测试。

Python代码

访问table.(login_module.py)的python代码如下:

class Deprt(object):
    def __init__(self, username, ms=None):
        if not ms:
            ms = []
        self.username = username
        self.ms = ms
    def m_addition(self, usernane):
        assert usernane not in self.ms
        self.ms.append(usernane)
class LModel(object):
    def __init__(self):
        self.loginusrs = []f
        self.passwords = {}
    def usr_addition(self, username, password):
        assert username not in self.loginusrs
        if password not in self.passwords:
            self.passwords[password] = Deprt(password)
        self.passwords[password].m_addition(username)

对应的步骤实现文件(step_implg.py)

文件如下:

from behave import *
from features.steps.login_module import LModel
@given('Collection of credentials')
def step_impl(context):
    model = getattr(context, "model", None)
    if not model:
        context.model = LModel()
    #iterate rows of table
    for r in context.table:
        context.model.usr_addition(r["username"], password=r["password"])
@then('user should be logged in')
def step_impl(context):
    pass

项目设置

Python项目中为文件设置的项目如下

Project Setup

运行特征文件后得到的输出如下所示,使用的命令是 Behave --no-capture -f plain .

Setup Table

输出显示打印的升压表。