2009-10-16 15 views
16

मैं एक ऐसे सर्वर के लिए यूनिट परीक्षण लिख रहा हूं जो HTTP सर्वर के रूप में चलता है। जिस दृष्टिकोण को मैं लेने का प्रयास कर रहा हूं वह उस मॉड्यूल को आयात करना है जिसमें HTTP सर्वर है, इसे शुरू करें। फिर, यूनिट परीक्षण कनेक्ट करने, डेटा भेजने और प्रतिक्रिया की जांच करने के लिए urllib2 का उपयोग करेगा।पायथन - ट्विस्ट और यूनिट टेस्ट

हमारा HTTP सर्वर ट्विस्ट का उपयोग कर रहा है। यहां एक समस्या यह है कि मैं सिर्फ ट्विस्टेड से परिचित नहीं हूं :)

अब, मैं अपने HTTP सर्वर को तुरंत चालू करता हूं और इसे setUp() विधि में प्रारंभ करता हूं और फिर मैं इसे आंसू() विधि में रोकता हूं।

समस्या यह है कि ट्विस्ट ऐसा नहीं दिखता है, और यह केवल एक यूनिट परीक्षण चलाएगा। पहले के बाद, रिएक्टर अब और शुरू नहीं होगा।

मैंने खोजा और खोज और खोज की है, और मुझे लगता है कि मुझे कोई जवाब नहीं मिल रहा है।

क्या मैं गलत दृष्टिकोण पूरी तरह से ले रहा हूं, या बस कुछ स्पष्ट याद कर रहा हूं?

उत्तर

17

यहाँ कुछ जानकारी है। परीक्षण में बहुत अच्छी चीजें हैं! लेकिन एसिंक एप्लिकेशन में परीक्षण करना हमेशा आसान नहीं होता है। सौभाग्य!

7

मेरा मानना ​​है कि ट्विस्ट के भीतर यूनिट परीक्षण के लिए आपको TwistedTrial का उपयोग करना होगा (यह एक मूल घटक है, यानी, मुड़/परीक्षण निर्देशिका में ट्विस्ट टारबॉल के साथ आता है)। हालांकि, जैसा कि यूआरएल मैंने इंगित किया है, दस्तावेज़ मुख्य रूप से स्रोत के माध्यम से देख रहा है (विभिन्न ट्विस्टेड परियोजनाओं के स्रोतों सहित, क्योंकि वे परीक्षण के साथ भी परीक्षण किए जाते हैं)। Writing tests for Twisted code using Trial

तुम भी परीक्षण आदेश की -help पर गौर करना चाहिए:

3

ट्विस्ट के साथ known bug है (शायद यह तय नहीं होगा) जहां रिएक्टर को फिर से शुरू करना एक क्रैश का कारण बनता है।

यही कारण है कि आपके यूनिट परीक्षण काम नहीं करते हैं।

साथ ही Trial का उपयोग करके आप अलग-अलग परीक्षण सिस्टम पर विचार करना चाहेंगे जो आपके HTTP सर्वर से क्लाइंट की तरह बात करेंगे।

  • Webdriver - आपकी साइट के चारों ओर एक ब्राउज़र सत्र चलाने के लिए एक एपीआई।
  • TestGen4Web - फ़ायरफ़ॉक्स प्लगइन जो साइट के साथ इंटरैक्शन रिकॉर्ड करता है और फिर से चला सकता है।
4

जैसा कि अन्य लोगों ने उल्लेख किया है, आपको ट्विस्ट में यूनिट परीक्षणों के लिए परीक्षण का उपयोग करना चाहिए।

आपको नीचे से यूनिट परीक्षण भी होना चाहिए - यही है कि इकाई परीक्षण में "इकाई" का तात्पर्य है। अपने इंटरफेस का परीक्षण करने से पहले अपने डेटा और तर्क का परीक्षण करें। एक HTTP इंटरफ़ेस के लिए, आपको एक नकली अनुरोध के साथ प्रक्रिया GET, processPOST, आदि को कॉल करना चाहिए, लेकिन इन तरीकों का परीक्षण करने के बाद आपको केवल यह करना चाहिए। प्रत्येक परीक्षण को यह मानना ​​चाहिए कि कहीं और परीक्षण की गई इकाइयां डिज़ाइन की गई हैं।

यदि आप HTTP बोल रहे हैं, या आपको एक चल रहे सर्वर या अन्य राज्य की आवश्यकता है, तो आप शायद उच्च स्तर के परीक्षण जैसे कार्यात्मक या एकीकरण परीक्षण कर रहे हैं। यह एक बुरी बात नहीं है, लेकिन हो सकता है कि आप अपने प्रश्न को दोबारा बदलना चाहें।

+0

आपको पता है कि मुझे लगता है कि आप सही हैं।ईमानदारी से, मुझे निचले स्तर के यूनिट परीक्षण करने के लिए केवल "अनुरोध" ऑब्जेक्ट नकली करना होगा (कुछ फ़ंक्शंस काफी हद तक उपयोग करते हैं)। – Dave

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