1

我正在检查日志文件中是否有任何错误消息。如果在日志文件中发现错误消息,那么我使用 'raise' 语句打印出创建并继续检查下一个日志文件。在日志文件中发现错误消息时,Cucumber 仍然指示该步骤已通过。我想知道如何标记一个步骤失败,所以它会在运行结束时打印它(例如:2 个场景(1 个失败,1 个通过)4 个步骤(1 个失败,3 个通过))。任何帮助,将不胜感激!

                 Scenario: Running rake test
                   Given the system is installed
                   Then I run the rake test



        logs_all = s.sudo "egrep -i '#{error_message}' #{log_file}"
        logs_all.each do |hostname, logs|
           unless logs.empty?
            puts line, "Unhappy logs on #{hostname}", line, logs
            happy = false
           end

          begin
            raise "Unhappy logs found! in #{log_file}" unless happy
          rescue StandardError => error
            puts error.message
          end

        end
4

1 回答 1

-1

首先,我建议阅读http://pragprog.com/book/hwcuc/the-cucumber-book或至少http://pragprog.com/book/achbd/the-rspec-book,其中有完整的 Cucumber 部分。

黄瓜测试必须通过,不能失败。如果一个失败,另一个可能会被跳过,这不是我们在运行测试套件时想要的。但是,如果日志不为空,您可以检查某个步骤是否会引发错误。

一个场景可能是:

Feature: Logs
Scenario: Checking non-empty log files
    Given there are logged errors
    When I check if logs are empty
    Then an error should be raised

运行cucumber,它会提示必要的步骤:

You can implement step definitions for undefined steps with these snippets:

Given /^there are logged errors$/ do
  pending # express the regexp above with the code you wish you had
end

When /^I check if logs are empty$/ do
  pending # express the regexp above with the code you wish you had
end

Then /^an error should be raised$/ do
  pending # express the regexp above with the code you wish you had
end

将这些放入 .../features/step_definitions/xxx_steps.rb 文件中,然后开始用pending真实代码替换。您不能使用您发布的代码块。您将开始编写 RSpec 测试。第一步可能是编写一个读取日志的方法。第二种方法检测是否有任何日志不为空。最后一个规范将检查是否引发了错误。

高温高压

于 2013-01-30T11:31:28.740 回答