2012-04-19 15 views
6

मैं ककड़ी और रूबी के लिए नया हूं। मैं एक व्यवसाय विश्लेषक हूं जो आवश्यकताओं को लिखने और परीक्षण मामलों के लिए प्रयोग किया जाता है, और मैंने ककड़ी और वाटिर पर पढ़ा है, लेकिन मुझे वास्तव में काम करने के लिए जो कुछ करने की आवश्यकता है उसे प्राप्त करने में मुझे परेशानी हो रही है।ब्राउज़र चुनने के लिए ककड़ी प्रोफाइल और ग्लोबल हुक

मैं आईई, फ़ायरफ़ॉक्स और क्रोम, और विभिन्न प्रकार के उपयोगकर्ताओं के रूप में वेब पृष्ठों के एक सेट का परीक्षण करने जा रहा हूं। मैं विशेषताओं को लिख रहा हूं और टैगिंग कर रहा हूं, और cucumber.yml में प्रोफाइल बना रहा हूं, इसलिए मैं विभिन्न उपयोगकर्ता प्रकारों के लिए उपयुक्त टैग किए गए परीक्षण चलाने के लिए-साथ ककड़ी चला सकता हूं।

मैं अलग-अलग पेज ऑब्जेक्ट्स बना रहा हूं ताकि मैं आसानी से मूल उपयोगकर्ता, रिपोर्ट उपयोगकर्ता, संपादक उपयोगकर्ता इत्यादि के रूप में लॉग इन कर सकूं। फीचर फाइलों में प्रत्येक प्रकार के उपयोगकर्ता के लिए थोड़ा अलग परिदृश्य और पास/विफल स्थितियां होंगी, और चरण defs उपयुक्त उपयोगकर्ता ऑब्जेक्ट्स को उन उपयोगकर्ता प्रकारों के रूप में लॉग इन करने के लिए कॉल करेंगे।

वॉटर-वेबड्राइवर के साथ सही ब्राउज़र खोलने के लिए तीन बार परीक्षण डुप्लिकेट करने के बजाय, और ब्राउज़र को प्रत्येक परिदृश्य के साथ खोलने और बंद करने के बजाय, मैं env.rb या hooks.rb में वैश्विक हुक बनाना चाहता था किसी भी फीचर को चलाने से पहले ब्राउज़र को खोलने के लिए और केवल एक बार खोलने के लिए, और जब सुविधाओं को चलाया जाता है तो वैश्विक हुक से स्टेटमेंट के साथ और उसके बाद इसे बंद करें। दोबारा, मैं टैग किए गए परिदृश्यों को कॉल करने वाले प्रोफाइल का उपयोग कर रहा हूं ताकि प्रत्येक उपयोगकर्ता प्रकार के लिए कौन से परीक्षण चल सकें।

मेरी समस्या यह है कि मेरे पास एक कदम है, बस ब्राउज़र खोलना। मैं जानता हूं कि प्रत्येक ब्राउज़र को खोलने के लिए उपयोगकर्ता वॉटर-वेबड्राइवर कैसे करें।

जो भी मैं चाहता था कि किसी भी परीक्षण से पहले ब्राउज़र खोलने के लिए वैश्विक हुक लगाए जाएं। तो env.rb में मैं ब्राउज़र = Watir :: Browser.new कॉल डालने जा रहा था।

मैं जो करना चाहता हूं उसके पास तीन अलग-अलग ग्लोबल हुक हैं, आईई, क्रोम और फ़ायरफ़ॉक्स के लिए प्रत्येक एक है, और उन्हें cucumber.yml में किसी प्रोफ़ाइल से पारित स्थिति के आधार पर कॉल करें, लेकिन मुझे यह नहीं मिल रहा है काम करने के लिए। मैंने उन्हें टैग करने की कोशिश की, और यह काम नहीं किया। क्या आप वैश्विक हुक टैग नहीं कर सकते? मैंने इसे एक if/then/else सेटअप के साथ करने की कोशिश की लेकिन यह भी काम नहीं किया।

मैं इस तरह के रूप में केवल एक वैश्विक हुक, कॉल करने के लिए cucumber.yml में एक प्रोफ़ाइल से एक पैरामीटर या टैग पारित करने में सक्षम होना चाहते हैं:

basicuser_overviewtests_ie: --tags @basic @overview @ie 

basicuser_overviewtests_ff: --tags @basic @overview @firefox 

Basicuser_newpagetests_ie: --tags @basic @newpage @ie 

आदि ... पहले दो टैग उल्लेख करता है परिदृश्यों के लिए, सही env.rb हुक के लिए तीसरा।

या, यदि मैं प्रोफ़ाइल से एक चर पारित कर सकता हूं, तो यह भी काम करेगा। मैं यह नहीं समझ सका कि मैं पर्यावरण परिवेश का उपयोग कैसे कर सकता हूं।

क्या मुझे कुछ याद आ रही है? क्या इस मुद्दे को समझाने के लिए पर्याप्त जानकारी है? धन्यवाद!


अद्यतन: समस्या का एक हिस्सा होने के लिए कि ककड़ी [समर्थन] फ़ोल्डर को नहीं पहचाना जब यह [सुविधाओं] फ़ोल्डर के रूप में एक ही स्तर पर था प्रकट होता है, यह [सुविधाओं] के नीचे होने की जरूरत है। मैंने जो क्यूक जानकारी कहा था वह अंदरूनी सुविधाओं के बजाए एक ही स्तर पर ठीक होगा। मामला नहीं।

तो अब मैं ब्राउज़र के लिए अपने तीन वैश्विक हुक प्राप्त कर सकता हूं, लेकिन टैगिंग मदद नहीं करता है, वे सभी एक बार में चलाए जाते हैं, भले ही टैग की गईं @ie या केवल टैग चलाने के लिए टैग की गई प्रोफ़ाइल के साथ टैग की गईं, अर्थात।

उत्तर

8

EDIT: पीपी।147-148 The Cucumber Book से मुझे विश्वास है कि यह काम करना चाहिए:

Before ('@ie') do 
    @browser = Watir::Browser.new :ie 
end 

मैं इसे परीक्षण नहीं किया है, लेकिन यह शायद आप मिलेगा जैसे आप चाहते हैं अगर आप एक टैग के रूप में ब्राउज़र पारित करने के लिए करना चाहता था।


मैं टैग को पढ़ने के तरीके को समझने में सक्षम नहीं था, हालांकि मुझे लगता है कि ऐसा करने का शायद कोई तरीका है। यदि मैं The Cucumber Book में इसे पार करता हूं तो मैं आपको अपडेट करूंगा। मैं पर्यावरण चर का उपयोग कर समाप्त हो गया। यहाँ कैसे मैंने किया है:

case ENV['BROWSER'] 
    when 'ie', 'Internet Explorer' 
    browser = Watir::Browser.new :ie 
    when 'ff', 'Firefox' 
    browser = Watir::Browser.new :ff 
    when 'chrome' 
    browser = Watir::Browser.new :chrome 
    when 'opera' 
    browser = Watir::Browser.new :opera 
    when 'debug' 
    debug_profile = Selenium::WebDriver::Firefox::Profile.new 
    debug_profile.add_extension 'features/support/firebug.xpi' 
    browser = Watir::Browser.new :firefox, :profile => debug_profile 
    else 
    browser = Watir::Browser.new :ie 
end 

Before do 
    @browser = browser 
end 

at_exit() do 
    browser.close 
end 

तब मैं सिर्फ कमांड लाइन पर BROWSER=<browser> में गुजरती हैं। एनएनवी चर का उपयोग करने के लिए मैंने जो कुछ किया है, उसके बारे में अधिक गहन चर्चा के लिए, आप ब्लॉग पोस्ट को पढ़ सकते हैं जिसे मैंने here लिखा था।

+0

यह काम किया, धन्यवाद! ऐसा लगता है कि मैं सही रास्ते पर था - मैंने पर्यावरण चर के साथ काम करने का प्रयास किया था, लेकिन मेरे पास सही वाक्यविन्यास नहीं था, और मैं टैगिंग पर चला गया, जो काफी काम नहीं करता था। यह ठीक वैसे ही काम करता है जैसा मुझे चाहिए, और आपके ब्लॉग पोस्ट ने बहुत मदद की - यह मेरे द्वारा किए जा रहे परीक्षण के समानांतर है। फिर से धन्यवाद! –

+0

बढ़िया! मैं खुशी से मदद कर सकता है। यदि आपने अभी तक नहीं किया है, तो ककड़ी बुक उठाएं। यह मेरे लिए बहुत उपयोगी रहा है। –

संबंधित मुद्दे