我正在处理几个月前部分完成的代码分支,它们依赖于交织在一起。因此,最简单的方法是将特定分支上的失败测试标记为挂起(rspec
方式)或跳过,并在合并完所有内容后处理它们。
在最终报告中,behave
报告通过的测试次数,#failed,#skipped和#suteted(当我按Ctrl-C中止运行时,这些值为非零) 。所以behave
作为跳过测试的概念。我如何能
访问那个?
答案 0 :(得分:18)
如果要在命令行控制事物,则执行另一个答案中建议的Tymoteusz Paul。简而言之,您可以使用任何标记来标记功能和方案,然后使用--tags
根据您使用的标记选择或取消选择功能和方案。该文档提供了使用@slow
标记慢速方案,然后使用behave --tags=slow
仅运行慢速测试,或使用behave --tags=-slow
排除慢速测试的示例。建议阅读documentation以了解--tags
允许的语法。
通过上述方法,您可以使用@skip
并执行behave --tags=-skip
。这将排除标有@skip
的所有内容,但每次调用都必须包含额外的参数,这很烦人。无法@skip
只是本身告诉Behave跳过,而不需要命令行上的任何参数?
如果你想要一个@skip
标签,它会跳过标有它的功能和方案,而不需要额外的参数,那么,从Behave 1.2.5开始,必须在environment.py
文件中构建功能。与what this answer建议相反,内置的不是。我们添加如下功能:
def before_feature(context, feature):
if "skip" in feature.tags:
feature.skip("Marked with @skip")
return
# Whatever other things you might want to do in this hook go here.
def before_scenario(context, scenario):
if "skip" in scenario.effective_tags:
scenario.skip("Marked with @skip")
return
# Whatever other things you might want to do in this hook go here.
.skip
方法的参数是跳过的原因。
我总是使用.effective_tags
在方案中执行标记测试。 .effective_tags
字段会继承在功能上设置的标记。在这种情况下,这没有区别,因为如果该特征具有@skip
,则强制其中的场景将被跳过。但是,我更倾向于遵循一般原则,即场景中的标记检查应使用.effective_tags
,以便标记继承有效。
等待! tutorial不是说@skip
是内置的吗?
不,本教程提供的内容有点误导,因为它提供的列表显示@skip
旁边的@wip
。 @wip
是内置的,因此@skip
内置得太对了?不,它们在列表中是“预定义或常用标签”。 @skip
仅仅是“经常使用”。它经常被使用,因为以信息方式使用单词“skip”来标记被跳过的内容。它并不意味着标签内置于Behave中。
答案 1 :(得分:0)
您可以使用预定义的“@skip”标记来表示您想要跳过的场景或功能,并且行为将自动跳过测试场景或整个功能。
答案 2 :(得分:0)
所有函数都必须在 environment.py 模块中声明:
环境.py
添加skip_scenarios= True来控制从各种功能文件中跳过特定场景。控制器在environment.py中的before_all函数中设置>**
def before_all(context):
pass
context.scenario_metadata_dict = {}
context.feature_metadata = {'skip_scenario': True}
如果功能文件中的任何场景包含标签“environmentSkip”且skip_scenario = True,则仅跳过这些场景。
def before_scenario(context, scenario):
if context.feature_metadata['skip_scenario'] and "environmentSkip" in scenario.effective_tags:
scenario.skip("Marked with skip from environment Control")
return
elif "skip" in scenario.effective_tags:
scenario.skip("Marked with @skip tag in feature File")
return
如果您希望在特定场景中跳过标记,则将具有标记 @environmentSkip 标记。
@system-testing @regression @environmentSkip
Scenario: validate Global Exclusion Rules for PrimaryEarlyLifeCLI Strategy
When derive the expected Results for global Exclusion rule NEGESTAT
| KEY | VALUE |
|test_scenario_id |TS1_GlobalExclusion_NEGESTAT|
注意:以上示例处理跳过场景、自然处理跳过和受控处理跳过。
自然方式:将帮助开发人员跳过用于调试目的的场景。
受控方式:将有助于控制特定环境的场景。
如果需要,也可以为 before_feature() 添加相同的控制。