2014-09-25 13 views
5

मैं एक रेस्ट एपीआई विकसित कर रहा हूं और इसे बेहाट और मिंक-सेलेनियम 2-ड्राइवर (पहली बार) के साथ परीक्षण कर रहा हूं। सुरक्षा उद्देश्यों के लिए, प्रत्येक कॉल को अनुरोध शीर्षलेख में एक apikey होना चाहिए।व्यवहार परीक्षण में अनुरोध शीर्षलेख कैसे सेट करें?

मेरी समस्या यह है कि, मैं हेडर सेट नहीं कर सकता। मेरा परीक्षण इस तरह दिखता है:

Given I add "X_ApiKey" header equal to "test" 
When I send a GET request to "/notice" 
Then the response status code should be 200 

लेकिन मैं एक 403

कोई समाधान प्राप्त हो रही है?

उत्तर

2

सेलेनियम में यह असंभव है। अन्य ड्राइवरों पर इसका परीक्षण करने की आवश्यकता है, जैसे कि guzzle

मेरे ज्ञान के लिए, सेलेनियम ड्राइवर लीड क्रोम, लेकिन यह कैसे काम नहीं कर रहा है। गोज़ल जैसे अन्य ड्राइवरों का उपयोग करने की जांच करने का प्रस्ताव, जहां आप हेडर सेट कर सकते हैं, मेरी राय में एक जवाब है।

नहीं, मैंने पाया कि आप अतिरिक्त विकल्प भी दे सकते हैं। यह अनुशंसा की जाती है कि आप ब्राउज़र द्वारा जेनरेट किए गए अनुरोधों के लिए अतिरिक्त हेडर इंजेक्ट करने के लिए प्रॉक्सी का उपयोग करें।

मैंने पाया * http://wiremock.org/

+1

इस प्रश्न का उत्तर प्रदान नहीं करता है:

Given that "X_ApiKey" header is set to "test" When I request "/notice" Then the response status code should be 200 

यहाँ negotiation-format.feature file से एक और उदाहरण है। किसी लेखक से स्पष्टीकरण की आलोचना करने या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपनी पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/help/whats-reputation) हो [किसी भी पोस्ट पर टिप्पणी करने में सक्षम] [http://stackoverflow.com/help/privileges/comment)। – DBD

+0

@ डीबीडी प्रारंभिक मान्यताओं को संशोधित करता है समाधान का एक प्रकार है। मेरे ज्ञान के लिए, सेलेनियम चालक क्रोम क्रोम, लेकिन यह कैसे काम कर रहा है। गोज़ल जैसे अन्य ड्राइवरों का उपयोग करने की जांच करने का प्रस्ताव, जहां आप हेडर सेट कर सकते हैं, मेरी राय में एक जवाब है। खासकर जहां वह रीस्टापी का परीक्षण कर रहा है - मैं वही कर रहा हूं, लेकिन इस प्रतिबंध के कारण, मैंने GUZZLE का उपयोग किया। – timiTao

0

आप behatch पैकेज है जो एक behatch/rest संदर्भ भी शामिल है का उपयोग करना चाहिए ऐसा करने के लिए।

हालांकि, उदाहरण के लिए जावास्क्रिप्ट के लिए, जब आपको विशेष रूप से ब्राउज़र की आवश्यकता होती है तो सेलेनियम ड्राइवर का उपयोग किया जाना चाहिए। इस मामले में, जैसा कि आप एक एपीआई एंडपॉइंट का परीक्षण कर रहे हैं, ब्राउज़र का उपयोग करके आपको केवल धीमा कर दिया जाएगा और कोई लाभ नहीं मिलेगा।

0

Restler का उपयोग करना संभव है, एक माइक्रो फ्रेमवर्क जो बेहाट में रीस्टफुल एपीआई परीक्षण में मदद कर सकता है। यह Behat और Guzzle का उपयोग कर व्यवहार संचालित API परीक्षण का समर्थन करता है।

यहाँ उदाहरण है:

Scenario: One with more `q` should be selected, q = 1 when not defined 
    Given that "Accept" header is set to "application/json;q=0.8,application/xml" 
    When I request "/examples/_003_multiformat/bmi" 
    Then the response status code should be 200 
    And the response is XML 
    And the type is "array" 
संबंधित मुद्दे