रुपेक - रूबी, सेलेनियम-वेबड्राइवर, आरएसपीईसी, स्वचालित परीक्षण, कैपिबरा में कमांड लाइन से हैश तर्क पास करना

कुछ की जरूरत है, जो नीचे के रूप में काम कर सकते हैं rspec DRY रखने के लिए:

rspec spec/features/users_spec.rb:12 -fd tab: "Home"

का उपयोग करना,

ruby 1.9.3
rspec 2.6.4
Rails 3.1.6
gem "capybara", "2.1.0"
gem "selenium-webdriver", "2.43.0"

वास्तविक में, मैं कई "it_behaves_like" कर रहा हूं, 50 से अधिक समान कोड के लिए कई पुनरावृत्ति कोड नीचे दिए गए हैं।

नीचे मेरी समस्या समझाने के लिए एक मूल उदाहरण है:

describe "Login" do

primary_admin = { acc_type: "admin", user_type: "primary" }
secondary_admin = { acc_type: "admin", user_type: "secondary" }
primary_admin = { acc_type: "non-admin", user_type: "primary" }
secondary_admin = { acc_type: "non-admin", user_type: "secondary" }

tab = { tab: "Home" }

it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)
it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)

tab = { tab: "My Profile" }

it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)
it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)

tab = { tab: "Security" }

it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)
it_behaves_like "Authorized User", primary_admin.merge(tab)
it_behaves_like "Authorized User", secondary_admin.merge(tab)

end

कई टैब के लिए, इसे ऊपर दिए गए कोड को दोहराना होगा।

यदि संभव हो तो मैं कंसोल से "टैब" तर्क पारित करना चाहता हूं। कृपया सलाह दें, यदि यह दोहराव कोड को कम करने के लिए संभव है या कोई अन्य तरीका है

नोट: मैं इन टेस्ट सूट को ऊपर के अलग-अलग हिस्सों में रखना चाहता हूं, आवश्यकता पड़ने पर लाइन नंबर का उपयोग करके आसानी से टेस्ट सूट की आवश्यकता होती है।

उत्तर:

उत्तर № 1 के लिए 4

आप env var का उपयोग कर सकते हैं

env TAB=home rspec spec/features/users_spec.rb:12

फिर, अपने कोड में

tab = { tab: ENV["TAB"] }

संबंधित सवाल
सबसे लोकप्रिय