【问题标题】:Re-use scenarios on multiple pages在多个页面上重用场景
【发布时间】:2015-01-13 16:41:19
【问题描述】:

我是 Specflow 的新手,需要一种在多个功能文件中重用场景的方法。

我有一个由多个页面组成的 Web 应用程序,每个页面共享许多项目,例如页脚内容。假设我的页脚包含 3 个链接:

Help | Feedback | FAQ

我有一个场景来测试“帮助”链接功能:

Scenario: Help link
    Given I am on page1
    When  I click on the link containing text "Help"
    Then  I see the help popup

由于“Given”语句指定要打开哪个页面,因此场景与该页面相关联。为了在 page2、page3、page4 等上测试相同的帮助链接功能,我需要:

1) 将场景复制到另一个特征文件中

2) 更改给定的语句以引用正确的页面

3) 对包含帮助链接的所有页面重复此操作!

这似乎有很多重复,必须有更好的方法来做到这一点。

【问题讨论】:

    标签: bdd specflow gherkin


    【解决方案1】:

    您可以使用场景大纲,它基本上是一个数据驱动的测试:

    Scenario Outline: Help link
        Given I am on <Page>
        When I click on the link containing text "Help"
        Then I see the help popup
    
    Examples:
        | Page       |
        | Home       |
        | Contact Us |
        | About Us   |
    

    【讨论】:

    • 谢谢 Greg,这很有用,但这意味着我需要在每个共享场景下复制示例块。我想我需要的是这个人建议的背景轮廓stackoverflow.com/questions/13141894/…
    • 所以您想针对多个页面运行整个功能?
    • 对于所有常见元素,是的。我可以为页眉/页脚/导航/等单独的功能文件。这是多个页面共有的。为什么要复制和粘贴每一页?
    • BoroDrummer 如果我是你,我会制作一个功能文件来测试帮助链接并将这个场景大纲放入其中。功能文件不必按网页分组。如果按功能对场景进行分组更有意义,那就去吧!同样为了测试执行时间,不要反对让一个测试检查帮助页面是否在正确的位置,然后再进行另一个测试来检查所有帮助链接指向正确的href。如果您要检查很多页面上的链接,那么您可以节省大量时间,而不必一遍又一遍地打开页面。
    • @alannichols,我喜欢你的想法,但不幸的是,事情没有那么简单。在这种情况下,帮助链接会创建一个覆盖窗口,该窗口通过 javascript 动态插入 HTML。我同意尽量减少页面加载。
    【解决方案2】:

    当您在这个级别工作时,您无法测试所有内容。实际上,您只能测试可能的一小部分。所以你要做的就是想想你在其他页面上测试页脚有什么好处,看看这是否值得

    1. 编写测试
    2. 运行测试

    其次,您不需要为每个页面重复所有测试。如果链接在一个页面上有效,那么它们将在所有其他页面上有效,因此您可以测试一次链接,然后检查页脚是否出现在其他页面上,例如

    Feature: Footer checks
    
    Scenario: Footer appears on pages
      Given a selection of pages
      When each page is visited
      Then each page should have the footer
    

    并让您选择的页面是所有页面中的随机小样本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多