0

我是黄瓜新手。我们有以下通过黄瓜实现 UI 自动化的用例。

请考虑以下示例。

在TestNg中,

@Test {"formname"}
public void createAndSearchForm(String formName)
{
    //In below  step, it create form by name (formName-timestamp) and return   the formname. e.g. it create form and return "formname-06042016184426"
    // In this method we create form name by appending time stamp to formname passed to method. Since application didn't accept same name we need to append timestamp
    //   to formname.
    String newFormName=createForm(formName);

    // In below method we pass above newFormName and verify whether form is created or not by searching form name.
    asserTrue(searchCreatedForm(newFormName));

}

现在我们正在转向黄瓜,我们需要在黄瓜中完成上述示例。

特点:表格。


场景:登录到应用程序
给定创建名为“formname”的表单,
然后搜索“formname”</p>

我们面临的问题 -> 在第 1 步中返回的表单名,我们不知道如何将其传递给第 2 步。在场景中,我们需要将此表单名称传递给在各个类中实现的不同步骤定义。

我试图在网上搜索,但没有找到任何特定于我们需要的东西。

如果有人能给我们一些指示/建议,那将是很大的帮助。

4

1 回答 1

1

编辑 当我需要跨多个步骤文件共享变量时,我创建了一个定义它们的超类。我的每个步骤文件都扩展了该超类,使它们能够访问该变量(或多个变量)。

如评论中所述,请注意将类变量设为静态,因为您可能会泄漏状态。我在类构造函数中将任何静态变量的值设置为一个值(例如 null),以便为每个场景重置该值。

--结束编辑--

public class YourStepDefinitions {

    private String interStepParameter;

    @Given("^Some first step$")
    public void first_step() {

        interStepParameter = "foo";

    }

    @Then ("^A second step$")
    public void second_step() throws Throwable {
        if (interStepParameter.equals("foo") {
           // Do something
        }
    }
}
于 2016-04-06T23:22:05.430 回答