测试 Rspec+Capybara 边学边用边分享 1-Rspec 自定义 HTML 报告并通过邮件发送

tonybearpan · 2014年06月27日 · 最后由 tonybearpan 回复于 2015年05月05日 · 3303 次阅读

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

大功告成,高大上的测试报告,有木有。

怎么提交代码?

此文已过期,有更方便的附加截图方法,请参照 https://ruby-china.org/topics/25437

需要 登录 后方可回复, 如果你还没有账号请 注册新账号