如何使用 Python 获取当前行为步骤?
How to get the current behave step with Python?
我正在使用 behave with Python 来做我的测试。在步骤文件中,我想获取当前步骤名称,因为如果测试失败,我会截图并将文件重命名为步骤名称。
像这样:
鉴于 用户已登录
当 用户做某事时
然后有事情发生
我希望我的步骤代码是这样的:
@given('user is logged in')
try:
# MY CODE HERE
except:
# GET THE STEP NAME HERE
有人知道怎么做吗?
我基本上已经完成了您尝试做的事情,通过在我的 environment.py
文件中设置 after_step
挂钩,截取失败测试的屏幕截图。
def after_step(context, step):
if step.status == "failed":
take_the_shot(context.scenario.name + " " + step.name)
如果一个步骤可以出现在多个场景中,您很可能也需要场景名称。
如果上述方法对您不起作用,不幸的是,behave 不会在 context
上为当前步骤设置 step
字段,就像在当前场景中为 scenario
所做的那样,或者feature
与当前功能。您可以有一个执行此类分配的 before_step
挂钩,然后在步骤本身中,您可以将步骤的名称访问为 context.step.name
。类似于:
def before_step(context, step):
context.step = step
以及步骤实施:
def step_impl(context):
if some_condition:
take_the_shot(context.scenario.name + " " + context.step.name)
我正在使用 behave with Python 来做我的测试。在步骤文件中,我想获取当前步骤名称,因为如果测试失败,我会截图并将文件重命名为步骤名称。
像这样:
鉴于 用户已登录
当 用户做某事时
然后有事情发生
我希望我的步骤代码是这样的:
@given('user is logged in')
try:
# MY CODE HERE
except:
# GET THE STEP NAME HERE
有人知道怎么做吗?
我基本上已经完成了您尝试做的事情,通过在我的 environment.py
文件中设置 after_step
挂钩,截取失败测试的屏幕截图。
def after_step(context, step):
if step.status == "failed":
take_the_shot(context.scenario.name + " " + step.name)
如果一个步骤可以出现在多个场景中,您很可能也需要场景名称。
如果上述方法对您不起作用,不幸的是,behave 不会在 context
上为当前步骤设置 step
字段,就像在当前场景中为 scenario
所做的那样,或者feature
与当前功能。您可以有一个执行此类分配的 before_step
挂钩,然后在步骤本身中,您可以将步骤的名称访问为 context.step.name
。类似于:
def before_step(context, step):
context.step = step
以及步骤实施:
def step_impl(context):
if some_condition:
take_the_shot(context.scenario.name + " " + context.step.name)