regex - 扩展 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
}
但是我的第二个黄瓜步骤(“我为用户输入正确的凭据”)与第一步定义相匹配,只是在凭据中添加了“正确”一词。
- 我该如何解决?
- 我是正则表达式的新手。是否可以从“何时”步骤中排除“正确”部分,以便我可以有一个可以用“正确”部分“扩展”的基本步骤?
解决方案
几个答案提出了一种命令式方法,该方法在 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
这种方法的一个很大的好处是,通过使数据/凭证处理程序环境感知,测试套件可以很容易地在不同的环境中重用。
推荐阅读
- python - 如何改变乌龟的颜色?
- agouti - 如何在 Go 的 agouti 中截取整页截图?
- javascript - 如何更新类中的对象
- javascript - Typescript & TypeORM:不能在模块外使用 import 语句
- c - 静态变量如何在c中工作?我是一名转换到 c 的 java 程序员
- algorithm - Fisher yates 算法没有产生无偏的结果
- r - Tidyquant tq_get 和 tq_transmute:警告消息“从数据中删除的缺失值”
- javascript - 如何将数组对象分组为子对象并计算它们
- python - 刮桌 BeautifulSoup
- python - Python Discord bot 发送文本而不是表情符号