2013-06-19 29 views
5

मैं निम्नलिखित सेटअप:एक अजवाइन कार्यकर्ता चल रहा है unittest में

  • Django-अजवाइन परियोजना एक रजिस्टर कार्य foo
  • परियोजना बी: कॉल करने के लिए foo
  • प्रोजेक्ट ए और परियोजना बी है अजवाइन के send_task का उपयोग करता है एक ही विन्यास: SQS, क्रमबद्धता, gzip, आदि के लिए msgpack
  • प्रत्येक परियोजना एक अलग GitHub भंडार पर रहता है

मेरे पास प्रोजेक्ट ए में "foo" करने के लिए यूनिट-परीक्षण कॉल हैं, बिना सेलरी का उपयोग किए, केवल foo(1,2,3) और परिणाम का दावा करें। मुझे पता है कि यह काम करता है।

मैंने यूनिट-परीक्षण किया है कि प्रोजेक्ट बी में send_task सही पैरामीटर भेजता है।

जो मैं परीक्षण नहीं कर रहा हूं, और आपकी सलाह की आवश्यकता है, दोनों परियोजनाओं के बीच एकीकरण है। मैं एक unittest कि होता है करना चाहते हैं:

  • परियोजना एक
  • के संदर्भ में एक कार्यकर्ता शुरू परियोजना बी
  • जोर का कोड का उपयोग शुरू कर दिया कार्यकर्ता कि में पहला कदम हो जाता है एक कार्य भेजें कार्य, दूसरे चरण में भेजे गए पैरामीटर के साथ, और foo फ़ंक्शन अपेक्षित परिणाम लौटाता है।

पाइथन के उपप्रोसेस का उपयोग करके और कार्यकर्ता के आउटपुट को पार्स करके इसे हैक करना संभव लगता है, लेकिन यह बदसूरत है। इस तरह के मामलों में इकाई परीक्षण के लिए अनुशंसित दृष्टिकोण क्या है? कोई भी कोड स्निपेट जो आप साझा कर सकते हैं? धन्यवाद!

+0

हमें समझने में सहायता करें, आप परीक्षण करना चाहते हैं कि कार्यकर्ता पक्ष पर क्या होता है? क्या यह कॉलिंग पक्ष से परीक्षण करने के लिए पर्याप्त नहीं है, और यदि सही उत्तर परिणाम परीक्षण की सफलता घोषित करते हैं? –

उत्तर

1

मुझे यकीन नहीं है कि यूनिट परीक्षण का उपयोग करके परिवहन तंत्र स्पष्ट रूप से परीक्षण तंत्र (यानी सेलेरी के माध्यम से कार्य पैरामीटर भेजना) का परीक्षण करना उचित है। निजी तौर पर, मैं अपना परीक्षण निम्नानुसार लिखूंगा (कई यूनिट परीक्षणों में विभाजित किया जा सकता है):

  • नमूना पैरामीटर के साथ कार्य उत्पन्न करने के लिए प्रोजेक्ट बी से कोड का उपयोग करें।
  • सेलेरी द्वारा उपयोग की जाने वाली विधि का उपयोग करके कार्य पैरामीटर को एन्कोड करें (यानी पैरामीटर को चुनना या उन्हें JSON के रूप में एन्कोड करना)।
  • फिर से कार्य पैरामीटर को डीकोड करें, यह जांच कर कि कोई भ्रष्टाचार नहीं हुआ।
  • कार्य फ़ंक्शन को कॉल करें, यह सुनिश्चित कर लें कि यह सही परिणाम उत्पन्न करता है।
  • कार्य फ़ंक्शन के परिणामों के लिए समान एन्कोडिंग/डिकोडिंग अनुक्रम निष्पादित करें।

इस पद्धति का उपयोग करके आप कि

  • कार्य पीढ़ी काम करता है का परीक्षण करने में सक्षम के रूप में
  • कार्य मानकों के एन्कोडिंग & डिकोडिंग इरादा और काम करता है परिणाम अपेक्षा के अनुरूप हो जाएगा

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

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

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