首先,设置...
我目前正在使用 Ruby 1.8.7 MRI 在 Mac OS X 上开发 Rails 3 应用程序,针对 MySQL 数据库运行测试和本地开发。我在公司为每个名为 dev、tqa 和 prod 的应用程序使用了 3 个“其他”非本地环境。它们使用 JRuby (1.8.7) 和 Oracle 作为后端在 Tomcat 中运行。
如您所见,环境完全不同,我们在部署到本地不存在的 Oracle/JRuby 环境时遇到了一些错误(如日期处理和在 Oracle 中指定默认模式)。
我喜欢在本地运行 Cucumber/Webrat/Capybara 之类的东西来访问应用程序中公开的每个 URL,以确保基本的东西正常工作(即烟雾测试)。理想情况下,它会点击每个 url,并且会做一些简单的事情,比如在表单中输入数据和点击按钮等。
理想情况下,当我部署到 dev/tqa 时,我会运行类似的东西,除了指向已部署的应用程序而不是本地应用程序。Cucumber 似乎针对本地运行的应用程序进行了优化,并与 Rails 很好地集成,但不能针对所有意图运行“外部”应用程序(或者至少我找不到一种实际可行的简单方法)。
此外,当我部署到 prod 时,我希望运行一套类似的冒烟测试,但它不会改变当前生产数据库的状态(即,只会获取 URL)。
我想可以使用像 Selenium 这样的东西,但我真的很想像使用 Cucumber 一样运行一个 rake 任务并返回结果。
是否有任何 Rails/Ruby 方法可以做到这一点,或者其他人只是使用 wget 或 Selenium 推出自己的解决方案?
这里问了一个类似的问题:Automatically Smoke test all pages in application, after deployment
不过,我不确定这个问题是否正是我的想法。