2012-08-27 27 views
3

通常每个生菜测试步骤需要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) 

回答

2

您的代码完全有效。您既可以使用位置参数(例如*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 

采取在减法例子仔细一看,这表明你如何通过名称引用捕获变量,而然后按位置。

1

什么阻止你这样做? 您可以在一个步骤中使用多个参数,就像您的示例所示。

我想步骤名称只是被解析为正则表达式模式,匹配的组将作为参数在步骤处理程序中传递。

+0

只是不确定,因为没有一个例子是这样使用它,有没有文件项链接到这个用法?无论如何我会验证。 – zinking

+0

我在我的项目中一直使用这个。你面对什么问题会让你相信它不会起作用? –

+0

没问题,只有我的项目中没有人使用它,确定那么确定。 – zinking

相关问题