首页 > 解决方案 > 扩展 Cucumber 步骤

问题描述

我有一个看起来像这样的 Cucumber 步骤:

When I enter the credentials for the user

还有一个说

When I enter the correct credentials for the user

相应的步骤定义为:

@When("I enter the ([^\"]*) for the user$")
public void stepDefinition(String cred){
    //code
}
@When("I enter the correct ([^\"]*) for the user$")
public void otherStepDefinition(String cred){
    //other code
}

但是我的第二个黄瓜步骤(“我为用户输入正确的凭据”)与第一步定义相匹配,只是在凭据中添加了“正确”一词。

  1. 我该如何解决?
  2. 我是正则表达式的新手。是否可以从“何时”步骤中排除“正确”部分,以便我可以有一个可以用“正确”部分“扩展”的基本步骤?

标签: regexautomated-testscucumberbdd

解决方案


几个答案提出了一种命令式方法,该方法在 BDD 中被视为反模式。相反,我强烈建议您使用自然或商业语言对 Gherkin 遵循声明性方法。如果您实际上是在测试登录功能,我会提出类似的建议:

When an authorised user enters their credentials

或基于角色

When an Administrator is authorised

如果登录实际上是被测功能的先决条件,那么例如:

Given an authorised user

或者

Given an authorised Administrator

这些可以通过凭据管理器进行备份。

... = ExpectedData.credentialsFor("@authorised");

标签应该代表特征,而不是预期数据的身份,要从测试数据 db 或 csv 中检索,其中包含以下内容:

@admin, administrator, password
@authorised, user, password
@unauthorised, user, wrong

所有测试数据输入都应使用相同的方法,例如:

Given a Cash Customer
Given a Credit Customer
Given a Customer with an overdue account

这种方法的一个很大的好处是,通过使数据/凭证处理程序环境感知,测试套件可以很容易地在不同的环境中重用。


推荐阅读