gpt4 book ai didi

python - 在步骤实现中跳过一个 behave 步骤

转载 作者:太空狗 更新时间:2023-10-29 20:10:53 29 4
gpt4 key购买 nike

有没有办法告诉 behave 在步骤实现中跳过当前步骤?

类似于:

@given("bla bla bla")
def step():
skip_current_step()

用例是我想检查是否安装了一些额外的软件。如果没有,我希望跳过整个场景。

最佳答案

让我改进@Barry 的回答:

基本上,他提出的(即 scenario.mark_skipped())等于:

scenario.skip(require_not_executed=True)

确切地说,mark_skipped() 的源代码如下所示:

def mark_skipped(self):
"""Marks this scenario (and all its steps) as skipped.
Note that this method can be called before the scenario is executed.
"""
self.skip(require_not_executed=True)
assert self.status == "skipped", "OOPS: scenario.status=%s" % self.status

skip() 定义如下:

def skip(self, reason=None, require_not_executed=False)

一些事情:

  • require_not_executed=True 表示如果任何步骤已经通过,则不能跳过该场景,即第二步或后续步骤中的 mark_skipped() 将抛出异常,然后跳过所有之后的步骤,而不是跳过进一步的步骤
  • skip() 允许提供跳过的原因,然后记录为 WARN

此外,scenario 对象在上下文中作为 context.scenario(与 context.feature 一起)可用。

最终,简单的例子:

@given("test photos in upload directory")
def step_impl(context):
if not connection_available():
context.scenario.skip(reason='internet connection is unavailable')

结果:

Skipped: skipped
WARNING:behave:SKIP Scenario Retrieving uploaded photo details: internet connection is unavailable

关于python - 在步骤实现中跳过一个 behave 步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504047/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com