通常每个生菜测试步骤需要1个参数,有没有办法在一个步骤中传入多个参数?在生菜测试步骤中传入多个参数
一样,我能有这样的:
@step('I have the number (\d+) and character (\w+)')
def have_the_number(step, number, character):
world.number = int(number)
world.character = str(character)
通常每个生菜测试步骤需要1个参数,有没有办法在一个步骤中传入多个参数?在生菜测试步骤中传入多个参数
一样,我能有这样的:
@step('I have the number (\d+) and character (\w+)')
def have_the_number(step, number, character):
world.number = int(number)
world.character = str(character)
您的代码完全有效。您既可以使用位置参数(例如*args
,就像在您的示例中一样)以及命名参数(如**kwargs
)。
考虑您有以下math.feature
:
Feature: Basic computations
In order to play with Lettuce
As beginners
We will implement addition and subtraction
Scenario: Sum of 0 and 1
Given I have to add the numbers 0 and 1
When I compute its factorial
Then I see the number 1
Scenario: Difference of 3 and 5
Given I have to substract 5 from 3
When I compute their difference
Then I see the number -2
和这样steps.py
:
from lettuce import *
@step('I have to add the numbers (\d+) and (\d+)')
def have_to_add(step, number1, number2):
world.number1 = int(number1)
world.number2 = int(number2)
@step('I have to substract (?P<subtrahend>) from (?P<minuend>)')
def have_to_substract(step, minuend, subtrahend):
world.minuend = int(minuend)
world.subtrahend = int(subtrahend)
@step('I compute their difference')
def compute_difference(step):
world.number = world.minuend - world.subtrahend
@step('I compute their sum')
def compute_sum(step):
world.number = world.number1 + world.number2
@step('I see the number (\d+)')
def check_number(step, expected):
expected = int(expected)
assert world.number == expected, "Got %d" % world.number
采取在减法例子仔细一看,这表明你如何通过名称引用捕获变量,而然后按位置。
什么阻止你这样做? 您可以在一个步骤中使用多个参数,就像您的示例所示。
我想步骤名称只是被解析为正则表达式模式,匹配的组将作为参数在步骤处理程序中传递。
只是不确定,因为没有一个例子是这样使用它,有没有文件项链接到这个用法?无论如何我会验证。 – zinking
我在我的项目中一直使用这个。你面对什么问题会让你相信它不会起作用? –
没问题,只有我的项目中没有人使用它,确定那么确定。 – zinking