2017-03-29 1 views
0

Ich habe viele Tests mit verschiedenen Login-Daten auf Gurken/Capybara/site_prism, die ziemlich chaotisch sind. Ich möchte sie so weit wie möglich vereinen. Diese Lösung schien schön https://blog.jayway.com/2012/04/03/cucumber-data-driven-testing-tips/Speicher und Daten in Hashes mit Gurke Extrahieren/Capybara

aber zu sein, wenn das Beispiel folgende ich in diesem Lauf für die erste Zeile der Schrittdefinition

Your block takes 1 argument, but the Regexp matched 2 arguments. 

Offenbar ich falsch verstehen, wie Hashes behandelt werden sollten; Könnte jemand bitte helfen? Mein Code mit weniger Testdaten unter Gurke

Given I login as "ad" with the following data: 
    |role|usern  |userpass  | 
    |ad |adcccount |adpassword | 
    |ml |mlaccount |mlpassword | 

Schritt Definition

Given /^I login as "(ad|ml)" with the following data:/ do |user| 
temp_hash = {} 
    if (user == "ad") 
     temp_hash = $ad 
    elsif (user == "ml") 
     temp_hash = $ml 
    end 

    usern = temp_hash["usern"] 
    userpass = temp_hash["userpass"] 

@app = App.new 
    @app.login.load 
    @app.login.username.set usern 
    @app.login.password.set userpass 
    @app.login.btn_login.click 
end 

Antwort

0

Sie bekommen diesen Fehler, da der zweite Parameter angepasst ist die data_table ist. Ihr Schritt Definition müssten

Given /^I login as "(ad|ml)" with the following data:/ do |user, data_table| 
    ... 

sein, wenn Sie den Blick auf Given /I create new user named "(user_1|user_2|user_3)" with the following data:/ do |user, data_table| Schritt in dem Artikel, den Sie Sie die gleiche Sache sehen verknüpft ist, kann, obwohl das nicht mehrere Einträge in der data_table verwenden ist, damit ich nicht zu 100 bin % sicher, was Sie in Ihrem Beispiel zu tun versuchen.

0

Danke, Thomas; Ihr Hinweis führen zu dem folgenden Code, der als

Given /^I login as "(ad|ml)" with the following data:/ do |login_role, data| 

    temp_hash = {} 
    data.hashes.each do |hash| 
    if hash[:role] == login_role 
     temp_hash[:role] = hash[:role] 
     temp_hash[:usern] = hash[:usern] 
     temp_hash[:userpass] = hash[:userpass] 
    end 
    end 

    usern = temp_hash[:usern] 
    userpass = temp_hash[:userpass] 

    @app = App.new 
    @app.login.load 
    @app.login.username.set usern 
    @app.login.password.set userpass 
    @app.login.btn_login.click 
    expect(@app.dashboard).to be_displayed 
end 
erwartet arbeitete