1

Railsアプリでいくつかのパフォーマンステストを行っています

これは test/performance/some_file.rb にあるため、ファイルにはいくつかのメソッドが含まれています。適切なログを取得するには、1 つだけ実行する必要があります

ファイル内には、いくつかの test_* メソッドがあります。

パフォーマンス テストを 1 つだけ実行する方法はありますか? 私は実行しています:

 rake test:benchmark TESTOPTS="--name=test_with_pet_care_job"

テストが開始されたように見えますが、何らかの理由でフリーズします。どうすれば 1 つのテストのみを実行できますか?

ソースファイルは次のとおりです。

テスト/パフォーマンス/登録/parent_full_test.rb

require './test/test_helper'
require 'rails/performance_test_help'
require 'benchmark_test_helper'
require './test/performance/registrations/logging_methods'

module Registration
  class ParentFullTest < ActionDispatch::PerformanceTest
    attr_reader :parent_data

    include Registrations::LoggingMethods

    def test_with_pet_care_job
      registration_step '01 Member should be created' do
        post registration_submit_path, parent_data[:base_info]
      end

      registration_step '02 Job should be posted' do
        post registration_submit_path, parent_data[:petcare_job]
      end
    end

    def test_with_companion_care_job
      registration_step '01 Member should be created' do
        post registration_submit_path, parent_data[:base_info]
      end

      registration_step '02 Job should be posted' do
        post registration_submit_path, parent_data[:companion_care_job]
      end
   end

   def setup
     refresh_member_data
     delete logout_path

     write_to_log("performance test started")
   end

   def teardown
     Account::Member.last.profile.destroy # to clean mongo data
   end


   private

   def refresh_member_data
     @parent_data = BenchmarkTestHelper.yaml_data(data_file)
   end

   def data_file
     File.join(File.expand_path('..' ,__FILE__), 'data/parent.yml.erb')
   end
 end

終わり

テスト/パフォーマンス/登録/logging_methods.rb

module Registrations
  module LoggingMethods

    def registration_step(step_name)
      before_count = Profile::MemberActivity.count
      write_to_log(step_name + ' started')
      yield
      write_to_log(step_name + ' finished')
      assert_equal Profile::MemberActivity.count, before_count+1, step_name
    end

    def write_to_log(message)
      Rails.logger.debug message
    end
end

test/benchmark_test_helper.rb

require 'yaml'

module BenchmarkTestHelper
  class << self
    def yaml_data(file_name)
      YAML.load(ERB.new(File.read(file_name)).result).with_indifferent_access
    end
  end

end
4

1 に答える 1

1
ruby -I test test/performance/some_file.rb --name=test_with_pet_care_job
于 2013-03-14T17:36:30.133 に答える