我试图在测试期间将文本输出到控制台,以了解发生了什么并有测试的历史记录,但似乎没有任何效果,printf 和 $stdout.write 都没有。
我应该只使用文本日志文件并完成它还是可以输出到詹金斯控制台?
我试图在测试期间将文本输出到控制台,以了解发生了什么并有测试的历史记录,但似乎没有任何效果,printf 和 $stdout.write 都没有。
我应该只使用文本日志文件并完成它还是可以输出到詹金斯控制台?
如https://content.pivotal.io/blog/what-happened-to-stdout-on-ci和https://github.com/ci-reporter/ci_reporter#environment-variables中所述,您需要设置CI_CAPTURE=off
这是我的 jenkins 配置的副本,用于在 Jenkins 中运行 Rails 应用程序的 RSpec 测试:
[ -d jenkins ] && rm -rf jenkins
mkdir jenkins
cp ~/configs/yourApp/default-db-config config/database.yml
rake db:migrate
rake db:test:prepare
export RAILS_ENV=test
export SPEC_OPTS="--no-drb --format documentation --format html --out jenkins/rspec.html"
rake spec
首先,它会从工作区中删除任何以前的测试历史记录(如果存在)。接下来,它在工作区中创建一个 jenkins 目录来存储测试输出。
然后它设置应用程序以使用有效的数据库配置进行测试(我没有将数据库配置文件存储在我的 git 存储库中)。
最后,如果需要,它会迁移开发数据库,准备测试数据库,将 RAILS_ENV 设置为测试并使用指定的 SPEC_OPTS 运行测试。
重要的位如下:
--format 文档...这会将测试进度的合理输出发送到您的控制台日志。正确编写测试,这将比您可能考虑使用的任何 puts 命令有用得多。
--format html ... 这会将测试结果的 HTML 文件输出到之前创建并在 --out 属性中指定的 jenkins 目录。将以下内容添加到您的职位描述中,以在该职位的主页上显示这些结果:
<iframe src='http://jenkins.your-domain.com/job/your-tests/ws/jenkins/rspec.html' width="100%" height="600" frameborder="0"/>
希望这能让您开始并运行 RSpec 的更有用的 jenkins 测试作业。
不确定詹金斯是否会改变这一点(我不这么认为),但在 Rspec 中你可以写
puts response.body
或者
puts "My mommy made me mash my M&M's"
或您想要的任何其他内容,它将被放入控制台/结果中