2014-12-04 22 views
22

Bitte erläutern Sie, wie Sie eine der folgenden Testmethoden mit RSpec deaktivieren. Ich verwende Selenuim WebDriver + RSpec-Kombinationen, um Tests durchzuführen.Wie kann ich eine Testmethode mit RSpec ignorieren oder überspringen?

require 'rspec' 
require 'selenium-webdriver' 

describe 'Automation System' do 

    before(:each) do  
    ### 
    end 

    after(:each) do 
    @driver.quit 
    end 

    it 'Test01' do 
     #positive test case 
    end 

    it 'Test02' do 
     #negative test case 
    end  
end 

Antwort

35

Sie können pending() verwenden oder it-xit oder wickeln in anstehenden Block für Warte Implementierung behaupten ändern:

describe 'Automation System' do 

    # some code here 

    it 'Test01' do 
    pending("is implemented but waiting") 
    end 

    it 'Test02' do 
    # or without message 
    pending 
    end 

    pending do 
    "string".reverse.should == "gnirts" 
    end 

    xit 'Test03' do 
    true.should be(true) 
    end  
end 
+0

Vielen Dank .. Es funktioniert !! –

6

Hier eine alternative Lösung besteht darin, die oben Testmethode zu ignorieren (Überspringen) (sagen sie, Test01) aus Beispielskript.

describe 'Automation System' do 

    # some code here 

    it 'Test01' do 
    skip "is skipped" do 
    ###CODE### 
    end 
    end 

    it 'Test02' do 
    ###CODE###   
    end  
end 
+0

Ich mag diesen. Semantisch, "überspringen" "xit" und "ausstehend" sind verschiedene Dinge – MegaTux

1

Es gibt zwei Möglichkeiten, einen bestimmten Codeblock während des Testens zu überspringen.

Beispiel: Verwenden von xit anstelle davon.

it "redirects to the index page on success" do 
    visit "/events" 
    end 

Ändern Sie den obigen Codeblock wie folgt.

xit "redirects to the index page on success" do #Adding x before it will skip this test. 
    visit "/event" 
end 

Zweiter Weg: Durch Aufruf innerhalb des Blocks anstehend. Beispiel:

it "should redirects to the index page on success" do 
    pending        #this will be skipped 
    visit "/events" 
end 
2

eine Reihe von Alternativen für diese sind. Hauptsächlich markiert es als pending oder skipped und es gibt einen feinen Unterschied zwischen ihnen. Von dem docs

Ein Beispiel entweder markiert werden übersprungen, in dem es nicht ausgeführt wird, oder anhängig, in dem es ausgeführt wird, aber Fehler werden einen Ausfall der gesamten Suite nicht verursachen.

Refere die Dokumentation hier:

7

Eine weitere Möglichkeit, Tests überspringen:

# feature test 
scenario 'having js driver enabled', skip: true do 
    expect(page).to have_content 'a very slow test' 
end 

# controller spec 
it 'renders a view very slow', skip: true do 
    expect(response).to be_very_slow 
end 

Quelle: rspec 3.4 documentation

2

Pending und Überspringen sind nett, aber ich habe das immer für größere beschreiben/Kontextblöcke verwendet, die ich ignorieren/überspringen musste.

describe Foo do 
    describe '#bar' do 
    it 'should do something' do 
     ... 
    end 

    it 'should do something else' do 
     ... 
    end 
    end 
end if false