【问题标题】:Python - Behave - Two different steps with the same namePython - 行为 - 两个同名的不同步骤
【发布时间】:2016-09-21 11:17:34
【问题描述】:

我正在使用 Behave 运行我的 python 测试

我想要做的是在不同的步骤文件中实现相同的步骤,例如“UserA 调用 UserB”,并将测试指向正确的步骤教导时间。

例如:

.feature 文件内容:

Scenario: User A calls User B
  Given UserA calls UserB

然后,在 step 文件夹中,我将有一个 .py 文件,其中包含:

@given('UserA calls UserB')
def step_impl(context):
   print('A call is being made')

另一个步骤 .py 文件将包含:

@given('UserA calls UserB')
def step_impl(context):
   print('A call is being made in another method')

我想控制将执行这些步骤中的哪一个。 有没有一种干净的方法可以做到这一点?

【问题讨论】:

  • 你能举一个mcve的例子吗?
  • @NathanMcCoy 我添加了一个简单的例子来解释我想要做什么
  • 它的结构很好,所以你不会混淆。你为什么要这个?有什么不同? a)重写您的步骤,以便它可以在两种情况下以正确的方式执行调用。或 b) 更改步骤名称,因为它确实是不同的步骤。
  • 你可以使用标签。例如,当场景被标记为@UI 时,该步骤可以使用 selenium 来运行 UI,但是当它被标记为 @Integration 时,它可以在较低级别上运行,从而避开 UI。

标签: python-2.7 python-behave


【解决方案1】:

在behavior Github仓库中询问后找到答案:

区分步骤的最佳方法是使用测试阶段。

例子:

如果我想使用相同的 .feature 文件编写具有不同实现的相同步骤,我可以打开两个目录:

dev_steps/
integration_steps/

并在使用阶段的行为命令中指向它们中的每一个:

behave --stage=dev

behave --stage=integration

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多