Cucumber : 我想在所有场景执行后通过电子邮件发送报告,有没有像 'AfterAll' 这样的方法可以在 hooks.rb 中使用
Cucumber : I want to send report on email after my all the scenario get executed, Is there any method like 'AfterAll' which can be used in hooks.rb
我已经创建了邮件功能来发送我的报告
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 中使用此功能,那么它会在每次执行每个场景后发送电子邮件
您可以在 hooks.rb 文件中使用 at_exit
。
at_exit do
# your email logic goes here
end
附加说明:After hook 将在每个场景后执行,这就是为什么它会在每个场景执行后发送电子邮件的原因。另一方面,at_exit
钩子只有在所有场景执行完后才会执行。
您可以直接在 at_exit
挂钩中实现电子邮件逻辑。如果您想调用 mailsender 方法但无法在 at_exit
挂钩中访问它,那么您可以创建电子邮件 class/module,如下所示。
考虑到您在 GenericModules 下有电子邮件模块
module GenericModules
module Email
def mailsender
# implement your logic here
end
end
end
然后在env.rb
中的world
添加Email模块,如下图。
World(GenericModules::Email)
现在,即使在 at_exit
挂钩中,您也应该能够访问该方法。
我已经创建了邮件功能来发送我的报告
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 中使用此功能,那么它会在每次执行每个场景后发送电子邮件
您可以在 hooks.rb 文件中使用 at_exit
。
at_exit do
# your email logic goes here
end
附加说明:After hook 将在每个场景后执行,这就是为什么它会在每个场景执行后发送电子邮件的原因。另一方面,at_exit
钩子只有在所有场景执行完后才会执行。
您可以直接在 at_exit
挂钩中实现电子邮件逻辑。如果您想调用 mailsender 方法但无法在 at_exit
挂钩中访问它,那么您可以创建电子邮件 class/module,如下所示。
考虑到您在 GenericModules 下有电子邮件模块
module GenericModules
module Email
def mailsender
# implement your logic here
end
end
end
然后在env.rb
中的world
添加Email模块,如下图。
World(GenericModules::Email)
现在,即使在 at_exit
挂钩中,您也应该能够访问该方法。