我使用Gauge一段时间,他们想到了concept,其定义为“概念提供了将可重复使用的逻辑步骤组合并为一个单元的能力。一个概念提出了摘要通过组合逻辑步骤组来确定业务意图”(Gauge conpect documentation)。
因此,一个人可以轻松地将多个步骤组合在一起,并在另一个测试用例中将它们作为一个步骤重复使用。
我想知道,黄瓜/小黄瓜是否有类似的东西?
背景是我有一个end2end测试用例,在其中包含多个断言,我想解开并创建多个场景。但是然后,我将有多个场景中有重复的步骤-我想将相关场景归为一组,以便将相应场景中的各个步骤最小化。
谢谢:)
Gauge是编写验收测试的框架。标尺规范基本上是一种手动测试脚本,已经可以执行。因此,重用步骤很有意义,因为它们倾向于描述底层操作。
另一方面,黄瓜有助于BBD,您可以使用Gherkin捕获系统的行为,而不是测试中的操作。因此,您无需编写Login as user "Charles: and create project "Firebird"
来描述操作,而是编写Given Administrator "Charles" created the project "Firebird"
。
这是一个观点上的转变,但有助于清楚地传达软件应执行的操作,而不是其应如何操作。
因此,您通常避免在Gherkin中编写底层操作。而是将它们提取到方法中,然后从步骤中调用这些方法。然后,您还可以在其他步骤中重用这些方法。
例如,假设我们有两个创建用户的步骤:
Given Administrator "Charles" created the project "Firebird"
And "Jullia" is added to project "Firebird"
@Given("{role} {persona} created the project {project}")
public void persona_with_role_creates_a_project(Role role, Persona persona, Project project){
createRole(role);
createUserForPersona(persona);
addRoleToUserForPersona(persona, role);
loginUserForPersona(persona);
createProject(project);
}
@And("{persona} is added to project {project}")
public void persona_with_role_creates_a_project(Persona persona, Project project){
createUserForPersona(persona);
addUserForPersonaToProject(persona, project);
}
@ParameterType("\"([^"]+)\"")
public Persona persona(String name){
// look up the persona by name from somewhere e.g. a config file
}
ect...
private void createRole(Role role){
// API calls to make a role here
// For test isolation it is important you don't reuse anything between tests.
}
private void createUserForPersona(Persona persona, Role role){
// API calls to create a user
// Don't forget to store the credentials for the persona somewhere
}
ect..
请注意,创建用户和项目可能需要大量信息。因此,与其将所有这些信息拼写到功能文件中,不如我们引用一个角色(“ Charles”,“ Firebird”),这些角色充当我们创建的项目类型的模板。我们可以使用参数类型({persona}
,{project}
)将这些提供给步骤定义对象,而不是普通字符串。这些将在执行步骤之前将字符串转换为对象。