如何使用Python获取当前行为步骤?


问题内容

我正在使用行为与Python进行测试。在步骤文件中,我想获取当前步骤名称,因为如果测试失败,我将截屏并将文件重命名为步骤名称。

像这样:

给定 用户登录
时, 用户执行某项操作
发生某事

我希望我的步骤代码像这样:

@given('user is logged in')  
try:  
   # MY CODE HERE  
except:  
   # GET THE STEP NAME HERE

有人知道如何执行此操作吗?


问题答案:

我基本上已经完成了您想做的事情,通过after_stepenvironment.py文件中设置一个钩子,对失败的测试进行了截图。

def after_step(context, step):
    if step.status == "failed":
        take_the_shot(context.scenario.name + " " + step.name)

如果一个步骤可以出现在多个场景中,那么您很可能也想要场景名称。

如果上述方法对您不起作用,很遗憾,行为无法像在当前方案或当前功能中那样在当前步骤中设置step字段。您可能有一个执行该分配的钩子,然后在步骤本身中,将步骤的名称称为。就像是:context``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)