如何重复使用黄瓜小黄瓜步骤而不添加自定义后缀?

问题描述 投票:0回答:1

我第一次尝试同时学习黄瓜、小黄瓜和硒。 我希望能够重复使用各种

Given
And
语句的步骤。 我有一种方法,但感觉不对,因为我在小黄瓜语言中使用了独特的后缀,以避免与重复规则相关的一些编译时错误。

下面是我所做的一个简短示例,目前有效,但并不理想。

// account.feature
Feature: Account

Scenario: Can access account
 Given Reset database with mock data
 And Login as admin ##and##
 When Go to account
 Then Confirm email exists

// automobile.feature
Feature: Automobile

Scenario: Can access automobile
 Given Login as admin
 When Go to first automobile
 Then Confirm automobile name exists

// LoginSteps.java
package StepDefinitions;

import io.cucumber.java.en.Given;
import io.cucumber.java.en.And;

public class LoginSteps {
    
    public LoginSteps() throws Throwable {

    }
    
    @Given ("Reset database with mock data")
    public void resetDatabaseWithMockData() throws IOException {
        URL url = new URL("http://example.com/setup");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        int responseCode = con.getResponseCode();
        System.out.println("GET Response Code :: " + responseCode);
    }
    @Given("Login as admin")
    public void givenLoginAdmin() throws Throwable {
       loginAdmin();
    }
      
    @And("Login as admin ##and##")
    public void andLoginAdmin() throws Throwable {
       loginAdmin();
    }
      
    public void loginAdmin() throws Throwable {
        // login as admin code
    }
}

简而言之,我有两个功能文件

account.feature
automobile.feature
。 我预计
account.feature
首先发射,然后是
automobile.feature
。 请注意,两个功能文件都要求您
Login as admin
,但只有
account.feature
要求我使用一些模拟数据重置数据库。 因此,在
account.feature
中,我有一个
Login as admin ##and##
,而在
automobile.feature
中,我只有
Login as admin

这对我来说感觉不对。 我的总体目标是,我希望有几个

*.feature
文件针对
mock data set1
运行测试,然后另一组功能文件再次运行
mock data set 2
测试。

谁能告诉我是否有更好的方法来实现我的结果?

cucumber gherkin
1个回答
0
投票

原则上,您应该将测试设计为彼此独立。这可能意味着每个场景都要登录。这可能意味着为每个场景重新启动您的应用程序。这可能意味着为每个场景创建新数据。

这可能看起来很浪费,特别是如果您之前编写过手动测试脚本,但通过自动化,它应该足够快,您可以负担得起独立的测试执行。

所以像这样:

Given a new tenant of automobile website 
And a new account "admin" with the admin role
And a registered automobile "Ford 1"
When I the "admin" opens the automobile page
Then the automobile page contains a "Ford 1".

这是假设汽车网站是多租户的。如果没有,您可能必须为每个场景启动一个新的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.