1

开始玩Behave BDD 测试,我发现没有步骤定义命名空间的东西,这很容易导致 AmbiguousStep 异常。这里有哪些最佳实践?我认为当您的测试项目越来越大时,这将是一个问题。

这是我正在尝试做的事情:

特点一:

Feature: feature1
  Scenario: f1s1
    When take action
    Then it's ok

特点2:

Feature: feature1
  Scenario: f2s1
    When take action
    Then it's ok

foo4feature1.py:

@when('take action')
def step_impl(context):
    assert True

@then("it's ok")
def step_impl(context):
    assert True

bar4feature2.py:

@when('take action')
def step_impl(context):
    assert True # some other logic here according to feature2

我的两个功能(功能 1功能 2)都采取了行动。这两个步骤在它们的场景中具有不同的含义。他们只是碰巧同名(例如,采取行动)。我知道我可以仔细选择步骤的名称(例如,在feature2中使用“采取 f2 行动”而不是“采取行动” )以避免冲突。然而,在一个大型测试项目中,您不能确保每个人都记住其他人功能中的步骤名称。作为 BDD 方面的新手,我正在寻找可以遵循的最佳实践来处理这个问题。

4

3 回答 3

1

一般来说,您需要简洁的步骤(大多数 BDD 框架都是如此)。因此,一个目录范围内的同一步骤只能有一种含义。如果同一个步骤(文本)需要两种不同的含义,目前需要使用不同的目录。

将来,behaviour 将提供“特定于功能”的范围概念。这将允许你做你想做的事。

于 2015-02-20T22:18:25.783 回答
0

BDD 是一种通信和协作技术。存在直接自动化客户、开发人员和测试人员一起发现的示例的工具,但场景应该用您所在领域的“普遍存在的语言”编写(参见 Eric Evans 的《领域驱动设计》一书)。

因此,简短的回答是最佳实践需要对共享词汇表进行协作定义。然后这些场景更容易阅读和理解......这是一件好事。

于 2014-10-17T23:05:11.653 回答
0

将此添加到 environment.py 解决了我的问题。您需要导入解析。

@parse.with_pattern(r'[^"]*')
def parse_unquoted(text):
  """Parse/match string(s) that do not contain double-quote characters."""
  return text
于 2020-09-07T21:08:39.410 回答