2012-06-11 9 views
6

मैं SpecFlow के लिए नया हूं, और विभिन्न भूमिका प्रकारों के प्रमाणीकृत उपयोगकर्ताओं के लिए कई परीक्षण सुविधाएं/परिदृश्य स्थापित कर रहा हूं। मैं इसे कोयपु के साथ ब्राउज़र स्वचालन के माध्यम से कर रहा हूं।परिदृश्यों के बाद चलाने के लिए पृष्ठभूमि का समतुल्य

तो मेरे पास उस भूमिका प्रकार में किसी उपयोगकर्ता के लॉग इन को सेट करने के लिए सुविधा में पृष्ठभूमि चरण है।

Background: 
    Given I am logged in as a ...some role I'm interested in... 

सुविधा में प्रत्येक परिदृश्य के बाद, मैं बाहर फिर से उपयोगकर्ता प्रवेश करना चाहते हैं (अन्यथा पृष्ठभूमि में कदम में लॉग अगले परिदृश्य के लिए काम नहीं करेगा - मैं एक ही समुद्री चूहा ब्राउज़र उदाहरण रखते हुए कर रहा हूँ परीक्षण के बीच में खोलें)।

मुझे [AfterScenario] एनोटेशन मिला जो मैं उपयोग कर सकता था, लेकिन जैसा कि यह सभी सुविधाओं (जहां तक ​​मैं समझता हूं ...) में सभी परिदृश्यों में घिरा हुआ है, यह अनधिकृत उपयोगकर्ताओं के लिए परिदृश्यों को प्रभावित करेगा।

मैं गुंजाइश [Scope(Feature="Some Feature")] साथ [AfterScenario] मेरा मानना ​​है कि हो सकता है, लेकिन मैं में लॉग इन करने के होने की आशंका कर रहा हूँ/बाहर से पहले और है कि मैं परीक्षण कर रहा हूँ, और मैं इन सब को निर्दिष्ट करने को उत्सुक नहीं हूँ सुविधाओं की एक पूरी संख्या के बाद जादू तारों का एक गुच्छा के साथ।

तो मैं सोच रहा हूं कि फीचर फ़ाइल में कुछ ऐसा है जो पृष्ठभूमि के बराबर है लेकिन उस सुविधा में प्रत्येक परिदृश्य के बाद चलाने के लिए। (या वैकल्पिक रूप से, हो सकता है जिस तरह से मैं में लॉगिन कर रहा हूं प्रत्येक परिदृश्य के लिए/बाहर नहीं चीजों के बारे में जाने के लिए सबसे अच्छा तरीका है?)

उत्तर

10

specflow में कोई "Postground" सुविधा लेकिन आप tags filtering के साथ इसी तरह कुछ हासिल कर सकते है।

हमारी अधिकांश परियोजनाओं में हम उन परिदृश्यों को चिह्नित करने के लिए टैग का उपयोग कर रहे हैं जिनमें विशिष्ट सेटअप/टियरडाउन तर्क है। फिर हम BeforeScenario/AfterScenario हुक का उपयोग कर रहे तर्क निष्पादित करने के लिए:

[BeforeScenario("authentication")] 
public void BeforeAuthenticationScenario() 
{ 
    //... 
}  

[AfterScenario("authentication")] 
public void AfterAuthenticationScenario() 
{ 
    //... 
} 

और आप अलग-अलग स्थितियों या पूरे सुविधाओं टैग कर सकते हैं:

@authentication 
Feature: Some feature requires authentication 

@authentication 
Scenario: Some scenario requires authentication 

तो अपने कोड में आप केवल एक जादू स्ट्रिंग होगा "प्रमाणीकरण" और आपकी विशेषताओं में आप टैग के साथ घोषणात्मक रूप से कस्टम तर्क लागू कर सकते हैं।

+0

धन्यवाद, यह जाने का एक अच्छा तरीका दिखता है। आपकी राय में, आपकी राय में, "पोस्टग्राउंड" जैसी कोई उपयोगी सुविधा होगी, या आपको लगता है कि ऐसा कोई कारण नहीं है कि यह मौजूद क्यों नहीं है? – ngm

+1

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

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