我是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
但上述代码只有在我使用只有一个参数的寄存器类型时才有效,即文本或样本。如果我将它用于两者,那么我收到错误,该步骤未实现。
如果你能告诉我一个更好的方法,那么我将不胜感激。
谢天谢地,这是一个简单的修复!注意给定步骤中使用的参数变量:
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