我已创建邮件功能来发送报告
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 After中使用此功能,则每次执行每种方案后它都会每次发送电子邮件
您可以at_exit
在hooks.rb文件中使用。
at_exit do
# your email logic goes here
end
附加说明:After hook将在每个方案之后执行,这就是在每个方案执行之后它将发送电子邮件的原因。另一方面,at_exit
仅在执行所有方案之后,钩子才会执行。
您可以直接在at_exit
挂钩中实现电子邮件逻辑。如果您要调用mailsender方法并且无法在at_exit
挂钩中访问它,则可以如下所示创建电子邮件类/模块。
考虑您在GenericModules下具有Email模块
module GenericModules
module Email
def mailsender
# implement your logic here
end
end
end
然后将电子邮件模块添加到world
中的env.rb
,如下所示。
World(GenericModules::Email)
现在,即使在at_exit
钩子中,您也应该能够访问该方法。
现在我得到```Traceback(最近一次通话是最近的):/Users/
block in <top (required)>': undefined local variable or method
features /support/ hooks.rb :22:in mailsender'for main:Object(NameError)```我正在像```at_exit一样使用它做邮件发送结束@Akshay使用了强制性更新了答案
world
。让我们知道怎么回事。