1

例如:

Scenario:
Given the pageOne page
When I get pageOneTitle
And click the first menu item
And I get the pageTwoTitle
Then pageOneTitle is not equals pageTwoTitle

我有两个步骤的课程。每页一个。

  • PageOneSteps
  • PageTwoSteps

该方案的前三个步骤在 PageOneSteps 中,另一个在 PageTwoSteps 中。这意味着,pageTitleOne 保存在 PageOneSteps 中。验证步骤Then pageOneTitle is not equals pageTwoTitle is in PageTwoSteps。

如果 pageOneTitle 在 PageOneSteps 中,我如何在 PageTwoSteps 中等于 pageOneTitle 和 pageTwoTitle?

这是一个非常简单的例子。但我希望它能说明我的意思。

谢谢你的支持!

4

3 回答 3

5

在执行故事时,您可以使用一个上下文来放置多个 StepClasses 所需的对象/值。这可以使用ThreadLocal来实现。使用这样的上下文,您可以简单地将您在第二步中获得的值放入上下文中,并在需要进行比较的第五步中再次获取它。可以很容易地找到如何使用 ThreadLocal 的示例——例如这里

也许最简单的例子如下(有关更多信息,请参见上面的链接页面)。

故事:

Scenario: store and load a value
When I store the value asdf
Then the value is asdf

类上下文:

public class Context {
    private String data;
    // getData(), setData(), ...
}

MyThreadLocal 类:

public class MyThreadLocal {
    static final class ContextLocal extends ThreadLocal<Context> {
        @Override
        protected Context initialValue() {
            return new Context();
        }
    }

    private static final ThreadLocal<Context> userThreadLocal = new ContextLocal();

    public static Context get() {
        return userThreadLocal.get();
    }
}

和步骤类:

public class SomeSteps extends Steps {
    @When("I store the value $value")
    public void storeValue(String value) {
        MyThreadLocal.get().setData(value);
    }
}

public class SomeOtherSteps extends Steps {
    @Then("the value is $value")
    public void checkValue(String value) {
        assertEquals(value, MyThreadLocal.get().getData());
    }
}

在 Context 类中,您可以使用更精细的方式来存储数据,例如 Map。

于 2013-10-28T14:36:54.820 回答
0

好吧,您似乎需要调用 PageObject 模式。而不是将属性标题放入步骤类中,而是将其放入 AbstractPage 类中。

然后创建从 AbstractPage 扩展的两个类 PageOne 和 PageTwo。

您应该从任何 StepClasses (给定页面)实例化那些 Page 对象...

于 2013-10-26T15:55:59.100 回答
0

你必须让你的步骤更明确,这样你就不会用同一个步骤来描述它两次。您可以像这样替换您的场景:

Scenario:
Given the pageOne page
When I get pageOneTitle as title of pageOne
And click the first menu item of pageOne
And I get the pageTwoTitle of pageTwo
Then pageOneTitle is not equals pageTwoTitle
于 2014-08-07T18:29:40.453 回答