class Bucky::Core::TestCore::TestClassGenerator
Attributes
test_classes[RW]
Public Class Methods
new(test_cond)
click to toggle source
# File lib/bucky/core/test_core/test_class_generator.rb, line 43 def initialize(test_cond) @test_classes = TestClasses @test_cond = test_cond end
Public Instance Methods
generate_test_class(data, link_status_url_log = {})
click to toggle source
Genrate test class by test suite and test case data
# File lib/bucky/core/test_core/test_class_generator.rb, line 49 def generate_test_class(data, link_status_url_log = {}) test_cond = @test_cond # Common proccessing # e.g.) TestSampleAppPcE2e1, TestSampleAppPcHttpstatus1 test_class_name = make_test_class_name(data) # Select super class by test category super_suite_class = eval format('Bucky::TestEquipment::TestCase::%<test_category>sTestCase', test_category: data[:test_category].capitalize) # Define test suite class test_classes.const_set(test_class_name.to_sym, Class.new(super_suite_class) do |_klass| extend TestClassGeneratorHelper include TestClassGeneratorHelper define_method(:suite_data, proc { data[:suite] }) define_method(:suite_id, proc { data[:test_suite_id] }) define_method(:simple_test_class_name) do |original_name| match_obj = /\Atest_(.+)\(.+::(Test.+)\)\z/.match(original_name) "#{match_obj[1]}(#{match_obj[2]})" end # Class structure is different for each test category case data[:test_category] when 'linkstatus' then data[:suite][:cases].each_with_index do |t_case, i| method_name = make_test_method_name(data, t_case, i) description( t_case[:case_name], define_method(method_name) do puts "\n#{simple_test_class_name(name)}" t_case[:urls].each do |url| link_status_check_args = { url: url, device: data[:suite][:device], exclude_urls: data[:suite][:exclude_urls], link_check_max_times: test_cond[:link_check_max_times], url_log: link_status_url_log } link_status_check(link_status_check_args) end end ) end when 'e2e' then if data[:suite][:setup_each] def setup super puts "[setup]#{simple_test_class_name(name)}" add_test_procedure(suite_data[:setup_each][:procs]) end end if data[:suite][:teardown_each] def teardown puts "[teardown]#{simple_test_class_name(name)}" add_test_procedure(suite_data[:teardown_each][:procs]) super end end # Generate test case method data[:suite][:cases].each_with_index do |t_case, i| # e.g.) test_sample_app_pc_e2e_1_2 method_name = make_test_method_name(data, t_case, i) method_obj = proc do puts "\n#{simple_test_class_name(name)}\n #{t_case[:desc]} ...." add_test_procedure(t_case[:procs]) end description(t_case[:case_name], define_method(method_name, method_obj)) end end end) end
setup()
click to toggle source
Calls superclass method
# File lib/bucky/core/test_core/test_class_generator.rb, line 86 def setup super puts "[setup]#{simple_test_class_name(name)}" add_test_procedure(suite_data[:setup_each][:procs]) end
teardown()
click to toggle source
Calls superclass method
# File lib/bucky/core/test_core/test_class_generator.rb, line 94 def teardown puts "[teardown]#{simple_test_class_name(name)}" add_test_procedure(suite_data[:teardown_each][:procs]) super end
Private Instance Methods
make_test_class_name(data)
click to toggle source
# File lib/bucky/core/test_core/test_class_generator.rb, line 117 def make_test_class_name(data) [ 'Test', data[:suite][:service].split(/_|-/).map(&:capitalize).join.to_s, data[:suite][:device].capitalize.to_s, data[:test_category].to_s.capitalize.to_s, (data[:test_class_name]).to_s ].join end