Automated tests Cucumber/Gherkin知道类似量规的概念吗?

Automated tests Cucumber/Gherkin知道类似量规的概念吗?,automated-tests,cucumber,gherkin,getgauge,Automated Tests,Cucumber,Gherkin,Getgauge,我使用Gauge有一段时间了,他们有了一个概念的想法,这个概念被定义为“概念提供了将可重用的逻辑步骤组组合成单个单元的能力。概念通过组合逻辑步骤组来表示业务意图的摘要”() 有了它,您可以轻松地将几个步骤分组,并在另一个测试用例中将它们作为单个步骤重用 我在想,黄瓜/小黄瓜是否也有类似的东西 背景是我有一个end2end测试用例,其中包含多个断言,我喜欢解开它们并创建多个场景。但是,我会有多个场景和重复的步骤——我希望将相关的步骤分组,从而最小化各个场景中的各个步骤 谢谢:)Gauge是编写验收

我使用Gauge有一段时间了,他们有了一个概念的想法,这个概念被定义为“概念提供了将可重用的逻辑步骤组组合成单个单元的能力。概念通过组合逻辑步骤组来表示业务意图的摘要”()

有了它,您可以轻松地将几个步骤分组,并在另一个测试用例中将它们作为单个步骤重用

我在想,黄瓜/小黄瓜是否也有类似的东西

背景是我有一个end2end测试用例,其中包含多个断言,我喜欢解开它们并创建多个场景。但是,我会有多个场景和重复的步骤——我希望将相关的步骤分组,从而最小化各个场景中的各个步骤


谢谢:)

Gauge是编写验收测试的框架。gauge中的规范基本上是一个可执行的手动测试脚本。因此,重用步骤是有意义的,因为它们往往描述低级操作

另一方面,Cucumber有助于BBD,您可以使用小黄瓜来捕获系统的行为,而不是测试中的操作。因此,如果管理员“Charles”创建了项目“Firebird”,那么就不用编写
,而是以用户“Charles:身份登录并创建项目“Firebird”
,该项目描述了您将编写的
操作

这在观点上是一个相当大的转变,但有助于清楚地传达软件应该做什么,而不是应该如何操作

因此,您通常避免在Gherkin中编写低级操作。相反,您可以将这些操作提取到方法中,并从步骤中调用这些方法。然后,您还可以在其他步骤中重用这些方法

例如,假设我们有两个步骤来创建用户:

  • 给定管理员“Charles”创建了项目“Firebird”
  • 和“Jullia”被添加到项目“Firebird”
@Given({role}{persona}创建了项目{project}”)
public void persona_与_role_创建_项目(role-role、persona-persona、project-project){
创建角色(role);
createUserForPersona(角色);
addRoleToUserForPersona(角色,角色);
loginUserForPersona(个人);
创建项目(project);
}
@和(“{persona}添加到项目{project}”)
public void persona_与_role_创建_项目(persona persona,project project){
createUserForPersona(角色);
addUserForPersonaToProject(persona,project);
}
@参数类型(“\”([^“]+)\”)
公共人物角色(字符串名称){
//从某个地方(例如配置文件)按名称查找角色
}
发射型计算机断层扫描仪。。。
私有void createRole(角色角色){
//API调用在此处创建角色
//对于测试隔离,在测试之间不要重用任何东西是很重要的。
}
私有void createUserForPersona(Persona Persona){
//创建用户的API调用
//别忘了将角色的凭据存储在某个地方
}
发射型计算机断层扫描仪。。

请注意,创建用户和项目可能需要相当多的信息。因此,我们没有在功能文件中拼写所有这些信息,而是引用了一个角色(“Charles”,“Firebird”),它充当我们创建的项目类型的模板。我们可以通过使用参数类型(
{persona}
{project}
)将它们提供给步骤定义对象,而不是普通字符串。这些将在执行步骤之前将字符串转换为对象。

在Gherkin中,您只需为步骤组创建一个步骤定义,并像在人类语言中一样使用它。下面的Ruby示例演示了在给定的“用户在登录页面上”下重用给定的“有效用户”

给定/^有效用户$/do
@user=user.create!({
:email=>“example@gmail.com",
:password=>“password”
})
结束
给定的/^用户位于登录页$/do
给定“有效用户”
访问登录url
结束
当/^user用(.*)/do|用户名填写用户名时|
填写“电子邮件”:使用=>用户名
结束
和/^用户使用(.*?$/do |密码填写密码|
填写“密码”:使用=>密码
结束
和/^用户按“登录”$/do
单击按钮“登录”
结束
然后/^user应位于用户主页上$/do
断言_等于(getCurrentUrl(),
"https://www.linkedin.com/feed/")
结束