是否可以将某个功能重新用作另一个功能的“给定”?
或者我正在尝试做一些我不应该做的事情
基本上我的功能如下:
Scenario: Creating a basic account with valid details (happy path)
Given I am on the "signup" page
And I enter all the right details #this is shortened of about 20 steps for your reading ease
When I press the button labelled "Sign up"
Then I should see the text "Thanks for signing up"
And I should have an email from "confirmation@mysite.com" titled "Confirm your account Michael"
And the database should contain a record for the user marked as unconfirmed
Scenario: Confirming account via email
Given I have created a basic account
When I open the confirmation email and visit the url to confirm the account
Then I should be logged in
And the database should contain a record for the user makred as confirmed
我清除了每个功能后的数据库,因为它们都应该能够单独运行...
我是以错误的方式解决这个问题吗?
由于
答案 0 :(得分:8)
您实际尝试的是重用方案。这在Cucumber中是no longer supported。
除了这种方法的其他问题之外,您的测试将更慢且相互依赖,因为您将:
不要那样做。
通常,您应该编写测试以独立工作,尽管您当然可以重用步骤定义。因此,在一般情况下,您可能希望添加共享步骤,如:
然后可以根据需要包含在您的方案中。这种方法的好处是步骤可以以编程方式创建或删除用户。
或者,如果大多数测试将在现有帐户上,请设置默认数据集,并使用正确的用户设备。对于您将测试帐户创建的有限子集,只需添加一个驱动用户删除的scenario background。
答案 1 :(得分:0)
如果您使用的是Javascript,我已经创建了一个名为reuse-cucumber-scenarios的程序包,用于调用方案:
Given the scenario "@scenario_tag"
Given the scenario "@scenario_tag" with parameters
"""
{
"1": ["step1_param1", "step1_param2"],
"2": ["step2_param1", "step2_param2", "step2_param3"],
"3": ["step3_param1", "step3_param2", "step3_param3"],
}
"""
或创建小黄瓜变量...
Given the variable "$variable_name" is equal to
"""
#JSON object
"""
或创建场景功能并通过执行...
来调用它们Given the scenario "@$scenario_function_tag" where variable "$variable_name" is "value_to_replace"
以及更多......
答案 2 :(得分:0)
目前,您可以使用以下方法:
Background:
Given Some common setup
And Some more setup
Scenario: one
When setup1
Then something1
Scenario: two
When setup2
Then something2