<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>tonybearpan (bibabo)</title>
    <link>https://ruby-china.org/tonybearpan</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>使用 rspec+capybara 实现资源站的遍历</title>
      <description>&lt;p&gt;最近团队的小伙伴要求提供全面的测试文件，无意间发现一个超级全面的测试文档资源站。
本人打算把它整成自己的资源：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;用正在使用的测试工具把所有资源链接和目录整合为一个 json 文件&lt;/li&gt;
&lt;li&gt;用百度云下载到自己空间里
先分享一下获取 json 的方法：

&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>tonybearpan</author>
      <pubDate>Sun, 21 Dec 2014 02:21:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/23307</link>
      <guid>https://ruby-china.org/topics/23307</guid>
    </item>
    <item>
      <title>Rspec+Capybara 边学边用边分享 1-Rspec 自定义 HTML 报告并通过邮件发送</title>
      <description>&lt;p&gt;Rspec 默认的 HTML 测试报告格式稍微有一点内容匮乏了
为了做到有图有真相，我们可以直接进入到 Rspec 的 html_printer 里面添加自定义的内容：&lt;/p&gt;

&lt;p&gt;路径~/.rvm/gems/ruby-2.0.0-p451/gems/rspec-core-2.14.8/lib/rspec/core/formatters
这个路径下面是所有输出报告的格式文件，大家想怎么折腾都可以啦
我做了如下修改：
文件
html_printer.rb
Pass 的 case 我们就不管了，但是 Fail 的是需要截图的：
&lt;strong&gt;第一步&lt;/strong&gt;：截图（当然你还可以把 html 保存下来）&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;after&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:each&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_screenshot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/screenshot/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;description&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"%Y%m%d%H"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.png"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;第二步&lt;/strong&gt;：在 HTML 报告添加链接
找到 def print_example_failed()
添加以下代码到这个方法最后：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@output.puts&lt;/span&gt; &lt;span class="s2"&gt;"      &amp;lt;span&amp;gt;"&lt;/span&gt;
          &lt;span class="vi"&gt;@output.puts&lt;/span&gt; &lt;span class="s2"&gt;"      &amp;lt;a href=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;http://pd.qiniu.com/testlogs/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"%Y%m%d%H"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.png&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;截图&amp;lt;/a&amp;gt;"&lt;/span&gt;
&lt;span class="vi"&gt;@output.puts&lt;/span&gt; &lt;span class="s2"&gt;"      &amp;lt;/span&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;第三步&lt;/strong&gt;：将截图和 HTML 报告同步到网络（现在好多云存储供应商都有免费的空间可以用，做测试文件存储绰绰有余，例如）
以本人使用的七牛云存储为例：
文档和下载地址：
&lt;a href="http://developer.qiniu.com/docs/v6/tools/qrsbox.html" rel="nofollow" target="_blank"&gt;http://developer.qiniu.com/docs/v6/tools/qrsbox.html&lt;/a&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./qrsboxcli init &amp;lt;AccessKey&amp;gt; &amp;lt;SecretKey&amp;gt; &amp;lt;SyncDir&amp;gt; &amp;lt;Bucket&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;&amp;lt;KeyPrefix&amp;gt;]
~/.qrsbox/qrsboxcli &lt;span class="nb"&gt;sync&lt;/span&gt; &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;第四步&lt;/strong&gt;：自动发送测试报告邮件
send_mail.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'net/smtp'&lt;/span&gt;

&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;MESSAGE_END&lt;/span&gt;&lt;span class="sh"&gt;
From: Acceptance test &amp;lt;XXXX@163.com&amp;gt;
To: PD &amp;lt;XXXX@XXX.com&amp;gt;
MIME-Version: 1.0
Content-type: text/html
Subject: [XXXXX test results]

&amp;lt;br&amp;gt;
&amp;lt;a href="http://XXX.qiniudn.com/testlogs/result_
&lt;/span&gt;&lt;span class="no"&gt;MESSAGE_END&lt;/span&gt;
&lt;span class="n"&gt;time_str&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"%Y%m%d%H"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'result_'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;time_str&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s1"&gt;'.html'&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;time_str&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s1"&gt;'.html"&amp;gt;Click me to view test result！！！&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;'&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;

&lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;SMTP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'smtp.163.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"163.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"XXX@163.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:login&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;smtp&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;smtp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'XXX@163.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'XXX@XXX.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'XXX@163.com'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大功告成，高大上的测试报告，有木有。&lt;/p&gt;</description>
      <author>tonybearpan</author>
      <pubDate>Fri, 27 Jun 2014 16:57:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/20201</link>
      <guid>https://ruby-china.org/topics/20201</guid>
    </item>
  </channel>
</rss>
