与两个功能文件相比,只有2个步骤有所不同 cucumber-selenium-java

问题描述

我正在学习黄瓜。我有两种情况。由于公司政策,我无法确切说明。第一步文件就像

Scenario 1: Flow with attachments
Given Login to APP
When User chooses "country"
And clicks "Yes"
And attaches "files"
And Go to location page
And add comments
Then Submit

Scenario2: Flow without attachments
Given Login to APP
When User chooses "country"
And clicks "Yes"
And add players manually
And User picks players
And User clicks on a player
And does the settings
And Go to location page
And add comments
Then Submit

我是否需要在方案2中再次编写所有步骤,还是可以做点什么,以便绕过在功能文件中编写所有步骤。 我的意思是我只能在第二个功能中维护不同的步骤,而就像我们为此编写步骤文件或粘合代码一样。 如果是,该怎么做,以便它运行前面的所有步骤。请帮忙

解决方法

与其按照用户在系统上执行的小动作编写所有步骤(例如“转到页面”,“单击此”,“提交该”),请考虑用户试图实现和创建的内容以一种对用户有意义的方式描述该步骤的步骤(即“从文件添加播放器”或“手动添加播放器”)。然后,该步骤的步骤定义将包含系统上的所有这些动作(单击,填充,等等)。您还可以在您的步骤定义中使用我们所谓的“帮助方法”。例如,创建一个将导航到特定页面的方法,然后在相关页面中调用该方法以从您的各个步骤定义中转到。

这样,您的方案将描述系统的预期行为,或应该允许(或不允许)用户执行的操作。

此外,从您提供的示例中,我不清楚您正在测试/声明什么。我一直发现使用“给定/与”来设置系统的原始状态,使用“何时/与”来执行要测试其结果的操作以及“然后/与”是很有帮助的。验证预期结果。 方案的标题应清楚地描述方案测试的目的。

根据您的示例,我假设您正在测试用户是否可以从文件或手动添加播放器。在这种情况下,方案可能类似于以下内容:

Scenario: User is able to add players from a file
Given a user who is logged in
And the user has selected "country"
When the user attaches "files"
And adds a comment about location
Then the players are added
And the comment is saved

Scenario: user is able to add players manually
Given a user who is logged in
And the user has selected "country"
When the user adds players manually
And adds a comment about location
Then the players are added
And the comment is saved

在上面的示例中,我还假设执行以下步骤:

And add players manually
And User picks players
And User clicks on a player
And does the settings

实际上是(总是)手动添加播放器所需的,因此所有这些操作都将在“手动添加播放器”的一个步骤中执行(通过一步实现所有操作,或从中调用多个辅助方法)一步)。

通过描述这种行为,可以更清楚地说明每种情况下要测试的内容以及系统的预期行为。

此外,这将导致“步骤”的重复操作更少(我相信这是您最初的问题)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...