Class: Magnesium::Testcase

Inherits:
Object
  • Object
show all
Includes:
TestData, TestResult, TestSite, TestStep, TestUI
Defined in:
lib/magnesium/factor/test_case.rb

Instance Method Summary collapse

Methods included from TestUI

#generate_UI

Methods included from TestResult

#get_expected_result, #get_real_result, #setbox, #setelement

Methods included from TestStep

#generate_step

Methods included from TestSite

#generate_site

Methods included from TestData

#generate_data

Constructor Details

#initialize(p, c) ⇒ Testcase



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/magnesium/factor/test_case.rb', line 21

def initialize(p,c)
  @prefix = p
  @caseno = c
  new_folder("#{Config.config["temp"]}nodes_hierarchy")
  #new folder id
  new_folder("#{Config.config["temp"]}#{TestLink.find_path(@prefix,@caseno).split(/\//)[0]}/#{TestLink.find_path(@prefix,@caseno).split(/\//)[1]}")


  #download attachment
  ssh = SSH.new
  ssh.host = Config.config["testlink"]["host"]
  ssh.username = Config.config["testlink"]["host_account"]
  ssh.pwd = Config.config["testlink"]["host_pwd"]
  ssh.local ="#{Config.config["temp"]}#{TestLink.find_path(@prefix,@caseno).split(/\//)[0]}/#{TestLink.find_path(@prefix,@caseno).split(/\//)[1]}/"
  ssh.server = "#{Config.config["testlink"]["install_path"]}upload_area/#{TestLink.find_path(@prefix,@caseno)}"
  ssh.download_file

  #factor
  @data = generate_data(@prefix,@caseno)
#      @data.prefix = @prefix
#      @data.caseno = @caseno
#      @data.generate
  @ui = generate_UI(@prefix,@caseno)
  @site = generate_site(@prefix,@caseno)
  @step = generate_step(@prefix,@caseno)
  @expected_result = get_expected_result(@prefix,@caseno)
end

Instance Method Details

#new_folder(path) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/magnesium/factor/test_case.rb', line 49

def new_folder(path)
  if (File.exist? path)
    puts "folder exist!"
  else
    Dir.mkdir(path)
  end
end

#runObject

1



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/magnesium/factor/test_case.rb', line 57

def run() #1
    begin #2
      @data.each do |data_key,data_value| #3
        browser_type = Config.config["browser"]["value"]
      @browser = Watir::Browser.new :chrome if browser_type == "chrome"
      @step.each do |step_key,step_value| #4
        @tempdata = data_value.hash[step_key] unless data_value.hash[step_key].nil?

        unless step_value.to_s.eql? 'goto' #5
          @ui.each do |ui_key,ui_value|
            @temptype = ui_value.container_type
            @temptitle = ui_value.container_title #if popup
            #
            unless ui_value.hash_element[step_key].nil?
              @tempelement = ui_value.hash_element[step_key]
              @templocate = ui_value.hash_locate[step_key]
              @tempvalue = ui_value.hash_value[step_key]
              @tempaction = ui_value.hash_action[step_key]
              unless ui_value.hash_box[step_key].nil?
                @tempbox = ui_value.hash_box[step_key]
              else
                @tempbox = Array.new
              end
              break
            end
            #
          end #ui

              #real run
          unless @tempelement.eql? 'js'
            fa = Factory.creator(@tempelement)
            fa.box = @tempbox
            fa.browser = @browser
            fa.generate
            fa.element(@templocate,@tempvalue)
            if @temptype == 'common'
              fa.execute(@tempaction,@tempdata)
            else
              dealpopup(@browser,@temptitle,fa,@tempaction,@tempdata)
            end
          else
                #if js has nothing to do with frame
                #if popip has no js
                #TODO
            execute_js(@browser,@tempvalue)
          end #unless js

              #end of real run
          else #5
          @browser.goto @site[step_key].to_s
          #gotoBrowser(@browser,@site[step_key].to_s)
          end #5
        end #4
        #generate result
        get_real_result(@prefix,@caseno,@browser)
        #end of per data test
        @browser.close
#        closeBrowser(@browser)
      end #3
      #delete temp fodler
      FileUtils.rm_rf "#{Config.config["temp"]}nodes_hierarchy/"
#end #3
#  rescue
#    error
  end #2
end