अजगर के साथ BDD का अभ्यास करना [बंद]


133

व्यवहार प्रेरित विकास के अभ्यास के लिए अजगर के लिए कौन से उन्नत ढांचे और उपकरण उपलब्ध हैं? विशेष रूप से रूबी के लिए आरस्पेक और मोचा के समान उपकरण ढूंढना बहुत अच्छा होगा।


1
फ़्लोप "न्यूनतम जादू के साथ एक RSpec BDD शैली में परीक्षण लिखने की अनुमति देता है"।
कार्ल जी

7
केवल SO पर अत्यधिक सूचनात्मक "रचनात्मक नहीं" समान है।
jeremyjjbrown

जवाबों:


38

इयान Bicking उपयोग करने की सलाह doctest व्यवहार प्रेरित डिजाइन के लिए:

मैं व्यक्तिगत रूप से एक व्यवहार चालित डिजाइन शैली में नाक और voidspace नकली का उपयोग करते हैं। विशेष रूप से, बीडीडी के लिए नाक के लिए विशेष प्लगइन उत्कृष्ट है।


7
एंड्रयू बेनेट्स ने हाल ही में कुछ पोस्ट के बारे में लिखा कि उन्हें क्यों लगता है कि दुर्व्यवहार किया जाता है। andrew.puzzling.org/diary/2008/October/23/narrative-tests andrew.puzzling.org/diary/2008/October/24/more-doctest-problems
ddax

4
मुझे लगता है कि सिद्धांत वास्तव में बीडीडी के दर्शन के साथ अधिक संरेखित है, जब आप इसका इलाज करते हैं जैसा कि इसका उद्देश्य था: आप सॉफ्टवेयर के बारे में लिखना शुरू करते हैं, और फिर इसे ऐसे उदाहरणों के साथ मिलाते हैं जो परीक्षण भी बनाते हैं। इसे "दस्तावेज़ संचालित विकास" के रूप में अच्छी तरह से वर्णित किया गया है - यह बिंदु बाहरी विवरण योग्य कार्यक्षमता पर ध्यान केंद्रित करना है, न कि कार्य की आंतरिक इकाइयाँ। मुझे लगता है कि परंपरा xUnit ऐसा करने में भयानक है।
.अनब

48

लेट्यूस का मतलब अजगर के लिए ककड़ी जैसा उपकरण होना है: http://lettuce.it/

आप स्रोत को github.com/gabrielfalcao/lettuce पर पकड़ सकते हैं


विंडोज़ उपयोगकर्ता जो लेट्यूस पर विचार कर रहे हैं, उन्हें पता होना चाहिए कि लेखन के समय, उस ओएस का समर्थन सीधा नहीं है।
leonigmig

7
Django के साथ लेट्यूस का उपयोग करने के इच्छुक किसी भी उपयोगकर्ता को इस बात की जानकारी होनी चाहिए कि डिफ़ॉल्ट रूप से, यह परीक्षण के लिए आपके डिफ़ॉल्ट डेटाबेस का उपयोग करता है । यह दिलचस्प डिजाइन पसंद मुझे एक उत्पादन डेटाबेस लागत :(
राहेल


1
धन्यवाद @seafangs - लेट्यूस की तुलना में बड़ी परियोजनाओं के लिए व्यवहार बहुत प्रबंधनीय है।
13:13

यदि आप django का उपयोग कर रहे हैं, तो अपने आप को Lettuce के उपयोग से कुछ समय बचाएं, वर्तमान संस्करण 2.19 नवीनतम django के साथ काम नहीं करता है।
जेम्स लिन

46

मैं वास्तव में व्यवहार करने की सलाह देता हूं

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

तब मुझे पता चला कि वह व्यवहार करता है, और वास्तव में इससे खुश है।


11
मैंने लेट्यूस से व्यवहार करने के लिए स्विच किया जब एक django प्रोजेक्ट में परीक्षण के लिए डिफ़ॉल्ट डेटाबेस का उपयोग करने के लिए उसके डिफ़ॉल्ट व्यवहार ने मुझे लाइव सर्वर पर एक उत्पादन डेटाबेस का खर्च दिया :( मुझे वास्तव में व्यवहार पसंद है; मैंने इसे शुरू करने के लिए django-behave प्रोजेक्ट शुरू किया है; django का परीक्षण ढाँचा github.com/rwillmer/django-behave
राहेल

1
मुझे आपका दर्द महसूस हो रहा है, मुझे यह देखकर भी खुशी हो रही है कि आपके दुख ने django पारिस्थितिकी तंत्र के संपन्न होने में योगदान दिया है। ;-)
जॉन वांग

1
क्या मैं फीचर फ़ाइलों के बिना व्यवहार का उपयोग कर सकता हूं? मेरे पास गैर-तकनीकी उपयोगकर्ता नहीं हैं, इसलिए उन्हें लिखना मेरे लिए सिर्फ शोर है। यदि कोई मेरा दिया हुआ / जब / तब परीक्षण नहीं कर सकता है तो उनका वहां कोई व्यवसाय नहीं है।
jeremyjjbrown

29

मैं आपको BDD और TDD के अभ्यास में प्रोग्रामर की मदद करने के लिए विकसित उपकरणों के एक सेट का उपयोग करने की सलाह देता हूं। यह उपकरण सेट द्वारा बनाया गया है: pycukes , specloud , ludibrio और should-dsl

चाहिए- DSL आपको RSpec जैसी उम्मीदें देगा। सब कुछ आप RSpec अपेक्षा एपीआई के साथ कर सकते हैं, चाहिए-डीएसएल भी करता है। आप गितुब से लेटेस्टवर्जन को हड़प सकते हैं ।

SpecLoud आपको BDD जैसी यूनिटीज को चलाने में मदद करता है। आप इसे करके स्थापित कर सकते हैं

pip install specloud

लुडीब्रियो टेस्ट डबल्स (मोक्स, स्टब्स और डमीज़) के लिए एक पुस्तकालय है। इसके माध्यम से स्थापित करें

pip install ludibrio

और PyCukes BDD का मुख्य उपकरण है। यह परिदृश्यों को फिर से चलाएगा, आदि।

pip install pycukes

अधिक जानकारी के लिए कृपया PyPi पर टूल डॉक्यूमेंटेशन पढ़ें ।


अपने उत्तर के विवरण की तलाश करते हुए यह उपयोगी दस्तावेज मिला: arxiv.org/pdf/1007.1722
amit

मुझे चाहिए- dsl। मैं अजगर बीडीडी के लिए एक डीएसएल पर विचार कर रहा हूं - कुछ हैं, यह एक बहुत अभिव्यंजक लगता है।
डैनी स्टेपल

मुझे पिरामिड नामक BDD ढांचे के बारे में कोई जानकारी नहीं मिल पा रही है। @Phaedrus द्वारा लिंक किए गए पेपर में संदर्भित लिंक एक संदिग्ध दिखने वाली साइट की ओर जाता है जिसका परीक्षण से कोई लेना-देना नहीं है, और वेब फ्रेम में पिरामिड को इंगित करता है। क्या कोई अप-टू-डेट लिंक प्रदान कर सकता है?
ब्योर्न पोलेक्स


@ BjörnPollex, पिरामिड वेब फ्रेमवर्क के कारण पिरामिड नाम का उपयोग इन उपकरण रचनाकारों द्वारा नहीं किया जा सकता है। अब वे केवल अलग उपकरण हैं।
डगलस Camata

11

शानदार पोस्ट और जवाब। इस सूची में फ्रेशन को शामिल करने के लिए बस अपडेट करना चाहता था क्योंकि मैंने पढ़ा कि पाइकुकस बंद हो गया है। फ्रेश के साथ BDD और Django का उपयोग करने के बारे में एक अच्छी पोस्ट यहाँ है


9

आप अभिव्यंजक अभिकथन के लिए "सुनिश्चित" का उपयोग कर सकते हैं (जैसे RSpec में)


Parabens! आपने पूरी तरह से मैजिकफ्रेम में कोड के साथ मेरे दिमाग को उड़ा दिया। मुझे नहीं पता था कि पायथन में "विस्तार के तरीके" (खुली कक्षाएं) संभव हैं।
mdwhatcott

8

Pyccuracy प्रोजेक्ट Python में BDD के लिए एक डोमेन-विशिष्ट भाषा प्रदान करने का एक प्रयास है।

Doctest के विपरीत, जो API स्तर पर काम करता है, यह उच्च-स्तरीय परिचालनों जैसे कि वेब पेज को लोड करने और फ़ॉर्म सबमिट करने के लिए एन्कोड करता है। मैंने इसका उपयोग नहीं किया है, लेकिन अगर यह वही है जो आप देख रहे हैं तो कुछ आशाजनक लगता है।


6

मुझे Pyccuracy बहुत पसंद हैं। मैं इन दिनों एक मध्यम आकार की परियोजना पर इसे लागू कर रहा हूं।


3
मैं किसी भी हाल ही में Pyccuracy बनाम Lettuce की तुलना में किसी को भी साझा कर सकता था दिलचस्पी होगी।
मिशेला

हो सकता है कि फ्रेशेन (ऊपर एक उत्तर में जुड़ा हुआ) भी तुलना में शामिल हो।
अमित

पहले से ही यहां पूछा गया: quora.com/…
amit

6

आजमाएँ pyspecs । विकास के दौरान लगातार पढ़ना और लगातार चलाना आसान बनाना इस परियोजना को बनाने में मेरे दो मुख्य लक्ष्य थे।

टेस्ट कोड:

from pyspecs import given, when, then, and_, the, this

with given.two_operands:
    a = 2
    b = 3

    with when.supplied_to_the_add_function:
        total = a + b

        with then.the_total_should_be_mathmatically_correct:
            the(total).should.equal(5)

        with and_.the_total_should_be_greater_than_either_operand:
            the(total).should.be_greater_than(a)
            the(total).should.be_greater_than(b)

    with when.supplied_to_the_subtract_function:
        difference = b - a

        with then.the_difference_should_be_mathmatically_correct:
            the(difference).should.equal(1)

कंसोल आउटपुट:

# run_pyspecs.py

  |  given two operands 
  |    when supplied to the add function 
  |      then the total should be mathmatically correct 
  |      and the total should be greater than either operand 
  |    when supplied to the subtract function 
  |      then the difference should be mathmatically correct 

(ok) 6 passed (6 steps, 1 scenarios in 0.0002 seconds)

4

मैं शायद इस बिंदु को पूरी तरह से याद कर रहा हूं, लेकिन मैंने मूल बीडीडी पेपर को बनाए रखा जो कि बीडीडी सिर्फ टीडीडी था कुछ सर्वोत्तम प्रथाओं पर जोर देने के लिए रद्द कर दिया ।

अगर मेरी व्याख्या सही है, तो आप किसी भी xUnit कार्यान्वयन में तरीकों का नाम बदलकर सिर्फ BDD ढांचा प्राप्त कर सकते हैं । तो बस आगे बढ़ो और मानक पुस्तकालय का उपयोग unittest

संपादित करें: चीज़ शॉप में एक त्वरित Google ने व्यवहार मॉड्यूल को बदल दिया । इसके अलावा बीडीडी के लिए खोज करने पर और कुछ नहीं मिला।


टीडीडी वास्तव में बीडीडी की तुलना में पूरी तरह से अलग पैमाने पर क्रांतिकारी अभ्यास है। फिर भी मैं बीडीडी शैली में परीक्षण-संचालित लिखने के तरीके की सराहना करता हूं।
जेटीआर

1
BDD इकाई स्तर पर शुरू हुआ, यह सच है। सिस्टम-स्तर के व्यवहार को शामिल करने के लिए यह बहुत तेज़ी से बढ़ा, जहां संदर्भ, घटनाओं और परिणामों को थोड़ा अधिक पुन: प्रयोज्य से लाभ होता है - इसलिए गैर-तकनीकी हितधारकों के साथ बातचीत से कैप्चर किए गए दोनों और प्राकृतिक-भाषा परिदृश्यों का समर्थन करने के लिए उपकरणों का प्रसार। चूंकि यह सवाल पूछा गया था कि हमने बातचीत और डोमेन भाषा के माध्यम से खोज पर समान जोर देने के साथ, फीचर इंजेक्शन का उपयोग करके प्रोजेक्ट विज़न स्तर तक BDD लिया है। अभी भी सूरज के नीचे कुछ भी नया नहीं है।
लुनिवोर

मुझे यह बात पसंद है कि bdd youtube.com/watch?v=pherUEzdJow । मैं विनिर्देशों को लिखने का एक अच्छा तरीका दिखाता हूं और इसे परीक्षण के रूप में रखता हूं।
अन्सबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.