Testing BDD小黄瓜脚本:针对多个角色的同一组场景

Testing BDD小黄瓜脚本:针对多个角色的同一组场景,testing,cucumber,bdd,gherkin,Testing,Cucumber,Bdd,Gherkin,我有一个功能,其中有许多场景需要测试,其中用户作为许多可能的角色登录(结果应该是相同的) 是否可以将示例表放在后台?例如: Feature: My general set of tests Background: Given I am logged in And I am logged in as <role> Examples: | role | | Sales | | Support | | Admin | | Auditor | Scenario: tes

我有一个功能,其中有许多场景需要测试,其中用户作为许多可能的角色登录(结果应该是相同的)

是否可以将示例表放在后台?例如:

Feature: My general set of tests

Background:
Given I am logged in 
And I am logged in as <role>

Examples:
| role    |
| Sales   |
| Support |
| Admin   |
| Auditor |

Scenario: tests1 blah...

Scenario Outline: tests 2 blah...
功能:我的常规测试集
背景:
鉴于我已登录
我是以用户身份登录的
示例:
|角色|
|销售|
|支持|
|管理员|
|审核员|
场景:tests1等等。。。
场景概要:测试2诸如此类。。。

因此,我要做的是使用不同的背景上下文迭代who功能文件,而不是为每个角色维护单独的功能文件。这可能吗?

不,这不可能。你能得到的最接近的是一个步骤定义“我登录了一个常见的角色(销售、支持、管理员、审计员)”,其中实际的角色每次都是随机选择的。这当然会使你的测试变得不确定,如果你100%肯定这个角色对结果绝对没有影响,这可能是可以接受的。当然,在这种情况下,你应该考虑不要在你的场景中提到这个角色。

不,这是不可能的。你能得到的最接近的是一个步骤定义“我登录了一个常见的角色(销售、支持、管理员、审计员)”,其中实际的角色每次都是随机选择的。这当然会使你的测试变得不确定,如果你100%肯定这个角色对结果绝对没有影响,这可能是可以接受的。当然,在这种情况下,你应该考虑不要在你的场景中提到这个角色。

记住BDD实际上不是关于测试的。我们用例子来说明我们想要的行为。您所需要的只是一个提供行为示例的场景

如果其中一个角色提供了不同的行为,那么也可以举一个该行为的例子

测试所有角色的结果是否相同的更好地方可能是在单元测试级别,无论哪个类将角色与不同的结果联系起来。当然,您可以手动测试它。很有可能,如果你做对了,并且它是手动工作的,那么如果不破坏你已经得到的一个例子,它就不会崩溃。够了


如果您尝试覆盖像这样的每个角色的每一个排列,您将最终得到一个非常缓慢的构建和太多的场景,这些场景都不再有趣。考虑一下你想要说明的例子,而不是测试,你会有一个更轻松的时间。

记住BDD实际上不是关于测试的。我们用例子来说明我们想要的行为。您所需要的只是一个提供行为示例的场景

如果其中一个角色提供了不同的行为,那么也可以举一个该行为的例子

测试所有角色的结果是否相同的更好地方可能是在单元测试级别,无论哪个类将角色与不同的结果联系起来。当然,您可以手动测试它。很有可能,如果你做对了,并且它是手动工作的,那么如果不破坏你已经得到的一个例子,它就不会崩溃。够了


如果您尝试覆盖像这样的每个角色的每一个排列,您将最终得到一个非常缓慢的构建和太多的场景,这些场景都不再有趣。考虑一下你试图说明的例子,而不是测试,你会有一个更轻松的时间。

到这一点,我认为你是正确的。我认为解决方案是使用一个典型角色并在其上运行场景,并使用一个贯穿所有角色选项的场景,确保它们在该功能中的特定单个功能上工作。到目前为止,我认为您是正确的。我认为解决方案是使用一个典型角色并在其上运行场景,并使用一个贯穿所有角色选项的场景,以确保它们在该功能中的特定单个功能上工作。