2011-12-30 2 views
0

나는 대부분의 테스트 프레임 워크에서 정리하는 기능이 있다는 것을 알고있다. 나는 IRB에서 몇 가지 테스트를 해왔으므로 자동 소거 기능 (소멸자와 같은)을 만들고 싶습니다. 나는 finalize 타입 함수 중 일부를 시도했지만 그들 중 아무도 불필요한 브라우저를 닫지 않았다. 아무도이 문제를 해결하지 못했습니까? watir-webdriver에서 브라우저를 실행하는 클래스에 대해 소멸자와 같은 함수를 만들 수 있습니까?

require 'watir-webdriver' 
class Session 
    attr_accessor :browser 
    def initialize 
    @browser = Watir::Browser.new 
    @browser.goto 'http://ipchicken.com' 
    end 

    def do_something_test 
    puts "your test passed!" if @browser.html.match /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ 
    end 
end 

가 아니면 나는이 모든 잘못 접근하고

같은 예를 들어 클래스와
d = Session.new 
=> #<Session:0x1016c5e60 @browser=#<Watir::Browser:0x1016c5dc0 url="http://ipchicken.com/" title="IP Chicken - Whats my IP address? ip address lookup" 
d.do_something_test 
your test passed! 
=> nil 
d = nil 
=> nil 

처럼

IRB 보인다!? 미리 감사드립니다.

답변

1

오이를 사용하지 않는 이유는 무엇입니까? 나는 내 프로젝트에 그렇게하고있다. 을 분리 기능 설명 RSpec에와

  • , @ browser.url.should 일치 "google.com"
  • 연속 실행과 같은 좋은 정합 기위한

    • 니스 DSL
    • 기능 : 장점

      내 프로젝트의 작은 하우투, 방금 오이 기능이있는 별도의 프로젝트를 만들었습니다 :

      테스트 프로젝트 구조 :

      |-- config.yml 
      |-- features 
      | |-- login.feature 
      | |-- signup.feature 
      | |-- profile.feature 
      | |-- ... 
      | |-- step_definitions 
      | | |-- auth_steps.rb 
      | | `-- click_steps.rb 
      | |-- support 
      | | |-- dom.rb 
      | | |-- env.rb 
      | | `-- path.rb 
      |-- Gemfile 
      `-- Gemfile.lock 
      

      내 Gemfile :

      source "http://rubygems.org" 
      
      gem "firewatir" 
      gem "watir-webdriver" 
      gem "awesome_print" 
      
      gem "cucumber" 
      gem "cucumber-rails" 
      gem "rspec" 
      gem "rspec-core" 
      gem "rspec-expectations" 
      gem "rspec-mocks" 
      

      env.rb

      require 'rspec/expectations' 
      require 'time' 
      
      Before do 
          @config = YAML.load_file(File.join(File.dirname(__FILE__), '../../config.yml'))["test"] 
          @@browser ||= case @config["browser"] 
          when "firefox" 
           require 'firewatir' 
           FireWatir::Firefox.new 
          when "IE" 
           require 'watir' 
           Watir::Browser.new 
          when "Opera" 
           require 'operawatir' 
           OperaWatir::Browser.new 
          when "Safari" 
           require 'safariwatir' 
           Watir::Safari.new 
          when "Chrome" 
           require 'watir-webdriver' 
           Watir::Browser.new(:chrome) 
          end 
      end 
      
      at_exit do 
          @@browser.close 
      end 
      

      더 많은 설명이 필요하면 내가 대답을 업데이트합니다.

      업데이트 : 보시다시피 브라우저를 만들고 at_exit을 닫습니다. 창문에서도 작동합니다.

  • +0

    Stanislav에게 많은 감사를드립니다. 나는 테스트 프레임 워크 솔루션을 가지고있다. (나는 RSpec으로 이것을하고있다.) 그래서 나는 after : all을 사용하여 멋지게 닫을 수있다. 그러나 나는 IRB와 함께 많은 일을하고 있으며 새로운 세션 (매달린 프로세스) 전에 브라우저를 닫는 것을 잊어 버렸다. 나는 가능한 한 소멸자에서 그것을 죽이는 것을 선호 할 것이다. 그러나 정보는 (나는 적절한 프로젝트 구조에 대해 많이 알지 못하기 때문에) 매우 도움이된다. –