Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python-Behave-两个同名的不同步骤_Python 2.7_Python Behave - Fatal编程技术网

Python 2.7 Python-Behave-两个同名的不同步骤

Python 2.7 Python-Behave-两个同名的不同步骤,python-2.7,python-behave,Python 2.7,Python Behave,我正在用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

我正在用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')
@given('UserA calls UserB')
def step_impl(context):
   print('A call is being made in another method')
另一个step.py文件将包含:

@given('UserA calls UserB')
def step_impl(context):
   print('A call is being made')
@given('UserA calls UserB')
def step_impl(context):
   print('A call is being made in another method')
我想控制执行这些步骤中的哪一个。
有没有干净的方法可以做到这一点?

在Github存储库中询问后找到了答案:

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

例如:

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

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

behave --stage=dev


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