Ruby on rails 3.2 利用现有数据进行基准测试

Ruby on rails 3.2 利用现有数据进行基准测试,ruby-on-rails-3.2,capybara,benchmarking,Ruby On Rails 3.2,Capybara,Benchmarking,我是Rails新手,但对软件开发并不陌生,因此其中一些问题可能是一些基本问题,还夹杂着令人挠头的问题 我们正在尝试在我们的应用程序中进行一些基准测试,并且在Rails、Capybara和数据库的配合方面遇到了一些令人沮丧的时刻 我们有一个数据库已经充满了数据,所以我决定从这个开始。这是我编写的脚本,用于创建数据库和运行测试: #!/bin/bash RAILS_ENV=test RAILS_ENV=$RAILS_ENV rake db:drop RAILS_ENV=$RAILS_E

我是Rails新手,但对软件开发并不陌生,因此其中一些问题可能是一些基本问题,还夹杂着令人挠头的问题

我们正在尝试在我们的应用程序中进行一些基准测试,并且在Rails、Capybara和数据库的配合方面遇到了一些令人沮丧的时刻

我们有一个数据库已经充满了数据,所以我决定从这个开始。这是我编写的脚本,用于创建数据库和运行测试:

 #!/bin/bash

 RAILS_ENV=test

 RAILS_ENV=$RAILS_ENV rake db:drop

 RAILS_ENV=$RAILS_ENV rake db:create

 RAILS_ENV=$RAILS_ENV rake db:migrate

 RAILS_ENV=$RAILS_ENV rake demo:data:load

 RAILS_ENV=$RAILS_ENV  rake test:benchmark
这是我写的一个简单测试:

require 'test_helper'
require 'rails/performance_test_help'

require 'capybara/rails'

# Profiling results for each test method are written to tmp/performance.
class BrowsingTest < ActionDispatch::PerformanceTest
  def setup
     sign_in "fred"
  end
  def test_dashboard
     get '/dashboard'
     get '/question_collections'
     get '/question_collections/5'
     get '/question_collections/5/questions/60'

     get '/message_collections'

   end

end
所以似乎没有发现水豚,这很奇怪,因为我们在功能测试中经常使用水豚。然后,我推出了自己的登录版本,并提出:

require 'test_helper'
require 'rails/performance_test_help'

# Profiling results for each test method are written to tmp/performance.
class BrowsingTest < ActionDispatch::PerformanceTest
   def setup
     login_as
   end
  def test_dashboard
   .....
  end

def login_as
  open_session do |sess|

    user = {}
    user["username"]='fred'
    user["password"]='*****'
    sess.post "/users/sign_in", :user=>user

  end
  end

end
用户似乎已登录(可能),但无法访问“/仪表板”。其他控制器相同。如果我只运行
rake demo:data:load&&rails s
,我就可以使用
fred
登录,它工作得很好

我认为Capybara问题和数据库问题是相关的——出于某种原因,
rake test:benchmark
没有在测试环境中运行,因此找不到数据,也没有加载Capybara

有人有什么想法吗

require 'test_helper'
require 'rails/performance_test_help'

# Profiling results for each test method are written to tmp/performance.
class BrowsingTest < ActionDispatch::PerformanceTest
   def setup
     login_as
   end
  def test_dashboard
   .....
  end

def login_as
  open_session do |sess|

    user = {}
    user["username"]='fred'
    user["password"]='*****'
    sess.post "/users/sign_in", :user=>user

  end
  end

end
 Started POST "/users/sign_in" for 127.0.0.1 at 2013-04-23 10:09:54 -0500
 Processing by DualLoginController#create as HTML
   Parameters: {"user"=>{"username"=>"fred", "password"=>"[FILTERED]"}}
  Completed 401 Unauthorized in 24ms
  Processing by DualLoginController#new as HTML
 Parameters: {"user"=>{"username"=>"fred", "password"=>"[FILTERED]"}}
  Rendered devise/shared/_links.erb (1.5ms)
  Rendered devise/sessions/new.html.erb within layouts/application (79.6ms)
 Completed 200 OK in 277ms (Views: 189.2ms | ActiveRecord: 0.0ms)

 Started GET "/dashboard" for 127.0.0.1 at 2013-04-23 10:09:55 -0500
   Processing by DashboardController#index as HTML
 Completed 401 Unauthorized in 1ms