Rspec 默认的 HTML 测试报告格式稍微有一点内容匮乏了 为了做到有图有真相,我们可以直接进入到 Rspec 的 html_printer 里面添加自定义的内容:
路径~/.rvm/gems/ruby-2.0.0-p451/gems/rspec-core-2.14.8/lib/rspec/core/formatters 这个路径下面是所有输出报告的格式文件,大家想怎么折腾都可以啦 我做了如下修改: 文件 html_printer.rb Pass 的 case 我们就不管了,但是 Fail 的是需要截图的: 第一步:截图(当然你还可以把 html 保存下来)
config.after(:each) do |example|
page.save_screenshot("#{path}/screenshot/#{example.example.description}_#{Time.now.strftime("%Y%m%d%H")}.png")
end
第二步:在 HTML 报告添加链接 找到 def print_example_failed() 添加以下代码到这个方法最后:
@output.puts " <span>"
@output.puts " <a href=\"http://pd.qiniu.com/testlogs/#{h(description)}_#{Time.now.strftime("%Y%m%d%H")}.png\">截图</a>"
@output.puts " </span>"
第三步:将截图和 HTML 报告同步到网络(现在好多云存储供应商都有免费的空间可以用,做测试文件存储绰绰有余,例如) 以本人使用的七牛云存储为例: 文档和下载地址: http://developer.qiniu.com/docs/v6/tools/qrsbox.html
./qrsboxcli init <AccessKey> <SecretKey> <SyncDir> <Bucket> [<KeyPrefix>]
~/.qrsbox/qrsboxcli sync &
第四步:自动发送测试报告邮件 send_mail.rb
require 'net/smtp'
msg = <<MESSAGE_END
From: Acceptance test <[email protected]>
To: PD <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: [XXXXX test results]
<br>
<a href="http://XXX.qiniudn.com/testlogs/result_
MESSAGE_END
time_str=Time.now.strftime("%Y%m%d%H")
file_name='result_'+time_str+'.html'
msg << time_str
msg << '.html">Click me to view test result!!!</a><br>'
msg << Time.now.to_s
Net::SMTP.start( 'smtp.163.com', 25, "163.com", "[email protected]", "password", :login ) do |smtp|
smtp.sendmail( msg, '[email protected]', '[email protected]','[email protected]' )
end
大功告成,高大上的测试报告,有木有。