2010-06-16 18 views
6

चलाना मैं कई बार ककड़ी की सुविधा चलाने की कोशिश कर रहा हूं (यानी 500 बार)। क्या हर बार एक ही आदेश में टाइप करने के लिए ऐसा करने का कोई तरीका है? मुझे लगता है कि यह रेक का उपयोग करके किया जा सकता है? मैं रेक या ककड़ी का उपयोग करने में एक विशेषज्ञ नहीं हूँ।एक ककड़ी की सुविधा कई बार

आपकी मदद की सराहना करेगा।

धन्यवाद

+0

यह वॉटर से कैसे संबंधित है? –

+0

मुझे विश्वास नहीं है कि मैं इसे कहने वाला पहला हूं, लेकिन: ऐसा मत करो। –

+0

ऐसा क्यों नहीं करते? यदि आप परीक्षण कर रहे हैं, और एक परीक्षण flaky है, यह देखने के लिए उपयोगी हो सकता है कि यह कितनी बार विफल रहता है और यदि यह हर जगह एक ही स्थान पर विफल रहता है। – zmorris

उत्तर

8
ruby -e '500.times { `cucumber` }' 
+0

मुझे यकीन है कि आप इसे एक बैश स्क्रिप्ट में भी कर सकते हैं, लेकिन मुझे पता है कि बाश से बेहतर रूबी है। – lambdabutz

+1

'x के लिए {1..500}; ककड़ी करो; किया जाता है 'जब तक आप बैश का पुराना संस्करण नहीं चला रहे हैं तब तक चाल चलाना चाहिए। रूबी में यह वास्तव में आसान, छोटा और तेज है, यद्यपि! – irkenInvader

+0

और अधिक अभिव्यक्तिपूर्ण! – lambdabutz

5

अपने रेक फ़ाइल के भीतर:

require 'rubygems' 
require 'cucumber' 
require 'cucumber/rake/task' 

cuke_task = Cucumber::Rake::Task.new(:features) do |t| 
    t.cucumber_opts = "features --format pretty" 
end 

task :feature, :name, :times do |task,args| 
    puts "Executing feature: #{args[:name]} #{args[:times]} times" 
    cuke_task.cucumber_opts = "features/#{args[:name]}" 
    args[:times].to_i.times { Rake::Task[:features].execute } 
end  

सबसे पहले मैं एक डिफ़ॉल्ट ककड़ी काम है कि मेरे सभी सुविधाओं पर अमल और उन्हें मेरे लिए बहुत से प्रारूप हैं पैदा करते हैं।

उसके बाद मैं एक रेक कार्य को परिभाषित, feature कि दो पैरामीटर सुविधा के name और निष्पादन की times स्वीकार करेंगे नाम दिया है।

मैं फिर name सुविधा का उपयोग करने के लिए क्यूक कार्य को बढ़ाता हूं जिसे मैंने निर्दिष्ट किया है और फिर रेक कार्य को निर्दिष्ट समय की संख्या निष्पादित करता है।

$ rake feature['login.feature',500] 
+0

उपरोक्त। जब मैंने इसे कार्यान्वित किया तो एक परीक्षण विफल हो गया था, प्रोग्राम बाहर निकल जाएगा, इसलिए आपको कोशिश करने के लिए प्रयास करें ब्लॉक को – jmccure

1

टैग की तरह कुछ के साथ अपनी सुविधा: @ AndIwillwalk500miles

@AndIwillwalk500miles 
Feature: Walk A Mile 
    'That I can walk a mile in another man's shoes.' 

    Scenario: That I can walk a Mile in loafers 
    Given I am wearing loafers 
    And I start at point A 
    When I walk a mile 
    Then I am at point B 

अपने features/support/ फ़ोल्डर में एक गहरे लाल रंग का फ़ाइल बनाएँ। कन्वेंशन env.rb या hooks.rb प्रतीत होता है, लेकिन इससे कोई फ़र्क नहीं पड़ता कि आप इसे उस फ़ोल्डर में कब तक कहते हैं। मैं अपना env.rb पर कॉल करता हूं। इसमें निम्न कोड डालें:

Around('@AndIwillwalk500miles') do |scenario, block| 
    500.times { block.call } 
end 

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

+0

में निष्पादित लाइन को लपेटना पड़ सकता है, अगर यह हुक रेगेक्स ले सकता है और टैग से समय को पार्स कर सकता है तो यह बेहतर होगा! या अगर हम कमांड लाइन से समय प्राप्त कर सकते हैं। –

-2

यह चारों ओर एक मूर्खतापूर्ण काम है, लेकिन इस

ककड़ी सुविधाओं/file.feature सुविधाओं /../ सुविधाओं/file.feature

रूप में लंबे समय फ़ाइल का पथ के रूप में की कोशिश हर बार समान नहीं है , आप के रूप में कई पर हमले कर सकते ".." के रूप में आप

3

यह चाहते भी एक परिदृश्य को रेखांकित करें और नेस्टेड चरणों का उपयोग कर पूरा किया जा सकता:

एन उदाहरण के साथ एक परिदृश्य को रेखांकित बनाएँ। परिदृश्य एन बार चलाएगा।

Feature: Login Robustness 

    Scenario Outline: I want to be assured that login works consistently 
    When i run login # "<login>" repeatedly, it never fails 

    Examples: 
    | login    | 
    | repeated login # 1 | 
    | repeated login # 2 | 
    | repeated login # N | 
      … 

परिदृश्य रूपरेखा के भीतर नेस्ट कदम के रूप में अपने मौजूदा चरणों का उपयोग आप को परिभाषित:

When(/^i run login \# "(.*?)" repeatedly, it never fails$/) do |login_run_number| 
    puts login_run_number 
    steps %{ 
    Given I am at initial login, Core 
    When A correct username and password are entered, Native (Core) 
    Then I should be logged in, Native (Core) 
} 
end 

लाभ:

  • केवल एक रिपोर्ट पूरे परीक्षण चालन के लिए लिखा है; परिणामों को देखने के लिए खोदने के लिए एन रिपोर्ट नहीं हैं।
  • यह मौजूदा ककड़ी कार्यक्षमता का उपयोग करता है; ढांचे में कोई संशोधन की आवश्यकता नहीं है।
  • परीक्षकों को पहले से ही समझ में आता है कि परिदृश्य कैसे काम करता है।

नुकसान:

  • बदसूरत, बहु .फ़ीचर फ़ाइल।
संबंधित मुद्दे