नाक बनाम पाइस्टेस्ट - (व्यक्तिपरक) अंतर क्या हैं जो मुझे लेने चाहिए? [बन्द है]


85

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

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

मैं दोनों नाक और पाइस्टेस्ट दोनों के प्रलेखन के माध्यम से देख रहा हूं, और जहां तक ​​मैं उन पुस्तकालयों के बड़े हिस्से को देख सकता हूं अनिवार्य रूप से एक ही कार्यक्षमता का समर्थन करता है, सिवाय इसके कि इसे अलग नाम दिया जा सकता है, या थोड़ा अलग वाक्यविन्यास की आवश्यकता हो सकती है। इसके अलावा, मैंने उपलब्ध प्लगइन्स में कुछ छोटे अंतरों पर ध्यान दिया (नाक में मल्टीप्रोसेस-सपोर्ट है, उदाहरण के लिए पाइस्टेस्ट नहीं लगता है)

तो ऐसा लगता है, शैतान विस्तार में है, जिसका अर्थ है (अक्सर कम से कम) व्यक्तिगत स्वाद में और हम बेहतर पुस्तकालय के साथ चलते हैं जो हमारे व्यक्तिगत स्वाद को सबसे अच्छा लगता है।

इसलिए मैं एक व्यक्तिपरक तर्क के लिए पूछना चाहता हूं कि लाइब्रेरी / सामुदायिक कॉम्बो चुनने के लिए मुझे नाक या पाइस्टेस्ट के साथ क्यों जाना चाहिए जो हमारी आवश्यकताओं को सबसे अच्छा लगता है।


बस इतना ही कहा कि कमोबेश यही सवाल यहाँ भी पूछा गया - लेकिन वह पाँच साल पहले का है, इसलिए मुझे अब भी लगता है कि सवाल को फिर से समझ लेना
जैकब वैन बेथलेहम

9
pytestpytest-xdist प्लगइन के माध्यम से मल्टीप्रोसेस समर्थन का समर्थन करता है ।
ब्रूनो ओलिवेरा

2
एक अलग रूप में के रूप में, संदर्भ प्रबंधकों सादे पायथन वस्तुओं रहे हैं, और आप कह सकते हैं manager.__enter__()अपने में TestCase.setUp(), और manager.__exit__()अपने में tearDown()
बचाव करें

जवाबों:


80

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

मैं पिछले कुछ सालों से py.test से काफी खुश हूं। केवल assertबॉक्स के बाहर एक परीक्षण लिखने में सक्षम होने के कारण मुझे लेखन परीक्षणों से घृणा होती है, और जो कुछ भी मुझे आवश्यक है उसे हैक करना बहुत आसान है। एक निश्चित प्लगइन इंटरफेस के बजाय, इसमें सिर्फ हुक के ढेर हैं, और सुंदर समझने योग्य स्रोत कोड आपको आगे खुदाई करने की आवश्यकता है। मैंने py.test के तहत Testify परीक्षण चलाने के लिए एक एडेप्टर भी लिखा था, और py.test के साथ Testify के साथ अधिक परेशानी थी।

मैंने कहा, मुझे लगता है कि नाक के पास आजकल बिना परीक्षण के प्लग इन हैं और आत्मनिरीक्षण करना है, इसलिए आप शायद इसके साथ ही ठीक करेंगे। मुझे अभी भी लगता है कि मैं py.test के साथ चल रहे मैदान को हिट कर सकता हूं, हालांकि, और मैं समझ सकता हूं कि जब यह टूट जाता है तो क्या हो रहा है।


2
ट्रेसबैक के साथ कुछ समस्याओं को नाक के आसपास लगभग 0.11 तय किया गया था, अब से कई साल पहले। चूंकि पायथन 3 पोर्ट से मुझे उम्मीद है कि कोई भी यूनिकोड ट्रेसबैक कम बार-बार होता है (हालांकि व्यक्तिगत रूप से मुझे लगता है कि मैं केवल एक बार नाक के साथ एक यूनिकोड समस्या में भाग गया था, जो इसे कुछ टेस्ट केस बेस क्लास के साथ जोड़ते समय क्रॉप हुआ था जिसने कुछ "ट्रिक" किया था 'didn' टी वास्तव में समझ में आता है - ताकि नाक की गलती न हो)। मुझे लगता है सच में दोनों उपकरण किसी न किसी किनारों पिछले कुछ वर्षों में उन्हें बंद दस्तक दी पड़ा है, तो शायद आप पसंद करेंगे सबसे अच्छा इनमें से जो भी आप सबसे हाल ही में ;-) इस्तेमाल किया जैसे
Croad Langshan

हाल ही में प्रलेखन भाग के बारे में क्या। मैं भी उलझन में हूँ कि क्या nosetests या py.test का उपयोग करें। दोनों समान रूप से अच्छे लग रहे हैं लेकिन जैसा कि मैंने पढ़ा, ज्यादातर लोग इन दिनों नोजेटिस्ट का उपयोग कर रहे हैं। क्या कारण हो सकता है जब py.tests में मल्टीप्रोसेसिंग पुस्तकालयों का बेहतर सेट उपलब्ध हो?
मालिकाना

1
@ जंक्शन यह सिर्फ इसलिए हो सकता है कि पहले नॉयसेट्स आए। कुछ फ्रेमवर्क ने इसके लिए समर्थन जोड़ा, उन फ्रेमवर्क का उपयोग करने वाले प्रोजेक्ट्स ने इसे डिफ़ॉल्ट रूप से उपयोग किया, और यह फैल गया। इसके अलावा, जबकि py.test नाक और बिना परीक्षण के चला सकता है, इसकी सामान्य शैली कक्षाओं के आसपास व्यवस्थित नहीं होती है, इसलिए py.test को पोर्ट करना कठिन लग सकता है।
ईवे

4
मैंने पाइस्टेस्ट के प्रलेखन भाग के माध्यम से पढ़ना शुरू कर दिया है और मैंने महसूस किया कि बहुउद्देश्यीय उद्देश्य के साथ-साथ एक newbee के लिए सीखने के मामले में, pytest एक बेहतर विकल्प है।
मालिकाना हक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.