如何在Python Behave中的Examples表中传递None或空白或多种数据类型

问题描述 投票:0回答:1

我是Python-Behave的新手,现在我已经陷入困境,所以需要你的帮助。我有一个带有示例表的场景大纲,我想要执行正面和负面测试,所以我想为列传递None或不同的数据类型。对于例如

Scenario Outline:
Given I have <text> different scenarios with <sample> parameter

Examples:
| text | Sample |
| 5    | 33     |
| a    |        |
|      | abc    |

现在,当我没有通过任何东西时,我无法执行该步骤。能否请你帮忙。

我尝试了下面的代码:

@parse.with_pattern(r"\w+")
def parse_string(text):
    return text.strip()

register_type(Val=parse_string)
use_step_matcher("cfparse")

@given(u'I have {text:Val?} different scenarios with {sample:Val?} 
parameter')
def step_impl(context, text, sample):
   context.text = text
   context.sample = sample

但上述代码只有在我使用只有一个参数的寄存器类型时才有效,即文本或样本。如果我将它用于两者,那么我收到错误,该步骤未实现。

如果你能告诉我一个更好的方法,那么我将不胜感激。

python-3.x gherkin python-behave
1个回答
1
投票

谢天谢地,这是一个简单的修复!注意给定步骤中使用的参数变量:

Given I have <text> different scenarios with <sample> parameter

第二个参数变量sample是小写的。但是,Example表的第二列的标题是Sample,它是大写的。这些必须相同。将Sample更改为sample,测试应该成功运行!

这是我的机器上的输出:

$ behave --tags @temp
Feature: Temp Test # features/unit.feature:1

  @temp
  Scenario Outline:  -- @1.1                             # features/unit.feature:13
    Given I have 5 different scenarios with 33 parameter # features/steps/unit.py:22 0.001s

  @temp
  Scenario Outline:  -- @1.2                           # features/unit.feature:14
    Given I have a different scenarios with  parameter # features/steps/unit.py:22 0.000s

  @temp
  Scenario Outline:  -- @1.3                             # features/unit.feature:15
    Given I have  different scenarios with abc parameter # features/steps/unit.py:22 0.000s

1 feature passed, 0 failed, 2 skipped
3 scenarios passed, 0 failed, 19 skipped
3 steps passed, 0 failed, 57 skipped, 0 undefined
Took 0m0.002s
© www.soinside.com 2019 - 2024. All rights reserved.