【问题标题】:Run same cucumber scenario multiple times多次运行相同的黄瓜场景
【发布时间】:2015-03-12 10:28:38
【问题描述】:

我正在尝试将相同的场景运行 1000 次。我要测试的是,如果我登录和注销 n 次,应用程序是否稳定。我想出了一种方法,但看起来并不整洁。我还想为同一 HTML 中的 1000 次执行生成报告。

这就是我所做的

黄瓜步:

    When I login "1000" number of times  

在我的步骤定义中是:

    successful_attempts = 0
    unsuccessful_attempts = 0
    attempt_login = attempt_login.to_i

    attempt_login.times do 

      visit_page(Login)

      on_page Login do |page|
        page.login_with username, password
        page.logout? ? (page.logout;successful_attempts+= 1) : unsuccessful_attempts+= 1
      end

    end

    puts "Total Attempts :  #{attempt_login}"
    puts "Successful Attempts : #{successful_attempts}"
    puts "Unsuccessful Attempts : #{unsuccessful_attempts}"

    fail if unsuccessful_attempts > 0

【问题讨论】:

  • 您在 Cucumber 中这样做是有原因的吗?这似乎是 Cucumber 的一个不同寻常的用例。
  • 我有一个现有的自动化套件,其中包含 200 个测试用例,并且必须在套件中添加它。我知道这不是一个好的黄瓜场景,但我必须想办法。
  • 很公平。您期望报告的外观如何?您是否希望在报告中看到每次登录尝试的一行或只是一个摘要?
  • 其实什么都可以,我想出了上面的报告方式。
  • 好的。那我不明白你的问题是什么。如果它已经有效,你为什么需要做出改变?

标签: ruby webdriver cucumber watir-webdriver


【解决方案1】:

你的情况有点不寻常。如果是我,我会尝试使用'Scenario Outline',其中每个场景都接受一个名为“尝试”的参数,例如:

Scenario Outline: verify login 1000 times
  Given I am not logged in
  When I log in with attempt <attempt>
  Then ...

  Examples:
    | attempt |
    | 1       |
    | 2       |
    | ...     |
    | 1000    |

步骤定义:

When(/^I log in with attempt (\d+)$/) do |attempt|
    ...
end

这样做的好处是您可以清楚地报告失败的尝试,可能会保留不同的异常日志,并且 1 个失败的案例不会阻止其他案例。这样做的缺点是您需要编写一些脚本来生成包含 1000 个数字的表格。

【讨论】:

  • 1000.times { |i| puts i } 的 irb 会话将为您生成您的号码...
  • 类似的东西可能是你最好的解决方案。我会把这个场景放到它自己的特性文件中,因为它会有点难看,并给它一个标签,这样你就可以自己运行它,或者根据需要包含/排除。
  • 使用场景大纲肯定会让它看起来很丑。缺点是我必须写 1000 行,如果他/她必须增加尝试次数(比如将尝试增加到 2000 或更多),用户将很难过。这就是我提出上述步骤的原因,以便我可以控制尝试次数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多