2015-06-11 79 views
1

我刚开始使用Spec流程以及Selenium & N单位。我有一个基本问题,也许我知道它的答案,但希望得到证实。考虑一下,有2个功能 - 注册,添加新的事务。 2个独立的功能及其各自的步骤定义。如何跨两个功能共享IWebDriver元素。我不想再次启动新的浏览器&添加事务。想要执行这两个流程。 我的想法是,这个功能是不允许使用Spec流作为基本功能的基于测试的使用被违反,因为试图在同一会话中运行2个功能。在这种情况下,上下文注入是否会提供帮助?Specflow,Selenium-在不同的步骤定义或类别之间共享数据

+0

我没有参考这个链接,但更多的信息总是赞赏。 http://stackoverflow.com/questions/2881685/in-specflow-how-can-i-share-data-between-steps-features – ReuseAutomator

+0

如果它只是为Webdriver,你可以尝试一个单例类来访问所有单实例不管特征如何。 – Kavan

回答

3

你想做什么是一个坏主意。你应该为每个功能开始一个新的浏览器会话,恕我直言。

无法保证测试执行的顺序,这将由测试运行人员决定,因此您可能会在Feature1之前运行Feature2。

实际上,您的场景也应该是独立的。

可以共享步骤之间的webdriver的实例作为this answer但你应该使用specflows其他功能,如场景Background做设置,或做你的comman设置definign步骤。

编辑

我们有一个类似的问题与我们的一些测试,这是我们做什么:

我们创建的第一步

Feature: thing 1 is done 

Scenario: Do step 1 
    Given we set things for step 1 up 
    When we execute step 1 
    Then some result of step one should be verified 

一个sceanrio然后我们做一个用于步骤2(其假设依赖于步骤1)

Feature: thing 2 is processed 

Scenario: Do step 2 
    Given we have done step 1 
    And we set things for step 2 up 
    When we execute step 2 
    Then some result of step 2 should be verified 

这第一步Given we have done step 1

是调用功能1的所有步骤的一步:

[Given("we have done step 1")] 
public void GivenWeHaveDoneStep1() 
{ 
    Given("we set things for step 1 up"); 
    When("we execute step 1"); 
    Then("some result of step one should be verified"); 
} 

那么,如果我们有第3步我们这样做:

Feature: thing 3 happens 

Scenario: Do step 3 
    Given we have done step 2 
    And we set things for step 3 up 
    When we execute step 3 
    Then some result of step 3 should be verified 

再次Given we have done step 2是一个复合步骤,调用步骤2中的所有步骤(因此调用步骤1的所有步骤)

[Given("we have done step 2")] 
public void GivenWeHaveDoneStep2() 
{ 
    Given("we have done step 1"); 
    Given("we set things for step 2 up"); 
    When("we execute step 2"); 
    Then("some result of step 2 should be verified"); 
} 

我们重复这个过程,以便当我们到达第5步时,它按照正确的顺序运行所有步骤。有时候我们可以步骤5我们@ignore前4个步骤,因为无论如何它们都将被第5步调用。

+0

@山姆 - 我看到你的意思是你的选择以任何顺序运行。有没有办法让这个工作顺序。我计划按特定顺序运行烟雾流量 - 一组5个功能。将具体的文件夹中的所有烟雾测试和编号运行它们解决它。我知道恕我直言,这不是一个好主意。 – ReuseAutomator

+0

我想在3,4完成后才运行第5个功能。但在这之前观察5次跑步。 – ReuseAutomator

+0

尝试使用您的代码在OrderedTest for MsTest中的功能之间共享WebDriver会话不起作用。任何想法?它在NUnit中起作用。 – ReuseAutomator