我是Python的新手-行为,现在被困住了,需要您的帮助。我有一个带有示例表的方案大纲,并且我想同时执行肯定和否定测试,所以我想为该列传递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
,但是以上代码仅在我仅将寄存器类型与一个参数(即用于文本或样本)一起使用时起作用。如果我同时使用它们,那么我会得到一个错误,那就是未执行该步骤。
如果您可以建议我一种更好的方法,那么我将不胜感激。
答案 0 :(得分:1)
非常感谢,这是一个简单的解决方法!注意给定步骤中使用的参数变量:
Given I have <text> different scenarios with <sample> parameter
第二个参数变量sample
为小写。但是,示例表的第二列的标题为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