Behave - Setup Table



A step can have a text and data table associated with it. We can add a data table with a step. It is recommended to have the table data indented and it is mandatory to have an equal column number for each line.

A column data should be separated by the | symbol.

Feature File with Table - Login.feature

The feature file is as mentioned below −

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

A table is accessible to the implementation Python code with the .table attribute within the context variable (passed in the step function). A table is an instance of Table. We can use the set up table to facilitate setting up the test.

Module

The python code to access table.(login_module.py) is as follows −

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 = []
      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)

Corresponding Step Implementation File - step_implg.py

The file is as follows −

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

Project setup

The project set up for the file in Python project is as follows

Project Setup

Output

The output obtained after running the feature file is given below and the command used is behave --no-capture -f plain.

(myenv) D:\behave\myenv\pythonProject>behave --no-capture -f plain
USING RUNNER: behave.runner:Runner
Feature: User Information

  Scenario: Check login functionality
    Given Collection of credentials ... passed in 0.001s
      | username | password |
      | user1    | pwd1     |
      | user2    | pwd2     |
    Then user should be logged in ... passed in 0.000s

1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
2 steps passed, 0 failed, 0 skipped
Took 0min 0.001s

The output shows the step up table printed.

Advertisements