Огурец: я хочу отправить отчет по электронной почте после того, как все мои сценарии будут выполнены. Есть ли какой-нибудь метод, подобный AfterAll, который можно использовать в hooks.rb - PullRequest
2 голосов
/ 05 февраля 2020

Я создал почтовую функцию для отправки моего отчета

class Email
  include PageObject
  require 'mail'

  def mailsender
      Mail.defaults do
        delivery_method :smtp,{ 
          address: "smtp.gmail.com",
          openssl_verify_mode: "none",
          port: 587,
          domain: 'gmail.com',
          user_name: 'xxxxxxxx@gmail.com' ,
          password: '*******' ,
          authentication: 'plain'
        }
      end

      Mail.deliver do
        from     'xxxxxxx.com'
        to       'xxxxx@test.com'
        subject  'Execution report'
        body     'PFA'
        add_file 'Automation_report.html'
      end
  end
end

Я хочу, чтобы эта функция выполнялась после выполнения всего сценария.

Это мой файл хука

# frozen_string_literal: true

require watir

Before do |scenario|
  DataMagic.load_for_scenario(scenario)
  @browser = Watir::Browser.new :chrome
  @browser.driver.manage.window.maximize
end

After do |scenario|
  if scenario.failed?
    screenshot = "./screenshot.png"
    @browser.driver.save_screenshot(screenshot)
    embed(screenshot, "image/png",)
  end
  @browser.close
end

Если я использую эту функцию в After do, она отправляет электронное письмо каждый раз после выполнения каждого сценария

1 Ответ

2 голосов
/ 05 февраля 2020

Вы можете использовать at_exit в файле hooks.rb.

at_exit do
   # your email logic goes here
end

Дополнительные примечания: после каждого сценария ловушка будет выполняться после того, как будет отправлена ​​электронная почта после каждого выполненного сценария. С другой стороны, хук at_exit будет выполняться только после того, как все сценарии ios будут выполнены.

Вы можете напрямую реализовать логи электронной почты c в хуке at_exit. Если вы хотите вызвать метод mailsender и не можете получить к нему доступ в хуке at_exit, вы можете создать класс / модуль электронной почты, как показано ниже.

учтите, что у вас есть модуль электронной почты в GenericModules

module GenericModules
  module Email
     def mailsender
         # implement your logic here
     end
  end
end

А затем добавьте модуль электронной почты в world в env.rb, как показано ниже.

World(GenericModules::Email)

Теперь вы сможете получить доступ к методу даже в at_exit hook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...