سؤال

ما هي الأطر والأدوات الأكثر تقدمًا المتاحة لبيثون لممارسة التطوير المبني على السلوك؟سيكون العثور على أدوات مشابهة مثل rspec وmocha لـ Ruby أمرًا رائعًا.

هل كانت مفيدة؟

المحلول

إيان بيكينغ يوصي باستخدام الدكتوراه للتصميم الذي يحركه السلوك:

أنا شخصيا تميل إلى الاستخدام الأنف و باطلة السمك وهمية في أسلوب التصميم الذي يحركه السلوك. على وجه التحديد ، المواصفات توصيل في للأنف ممتاز ل BDD.

نصائح أخرى

الخس يعني أن تكون أداة تشبه الخيار لـ Python: http://lettuce.it/

يمكنك الحصول على المصدر على github.com/gabrielfalcao/lettuce

أنا حقا أوصي تصرف.

أبحث عن استنساخ خيار للبيثون ، بدأت في استخدام الخس ، لكنني وجدت أنه نسخة طبق الأصل مصممة بشكل كبير. غير صوتي جدا.

ثم اكتشفت التصرف ، وكنت سعيدًا به حقًا.

أوصيك باستخدام مجموعة من الأدوات التي تم تطويرها لمساعدة المبرمجين في ممارسة BDD و TDD. مجموعة الأدوات هذه مؤلفة من قبل: Pycukes, specloud, ludibrio و يجب أن يكون.

يجب أن يكون سوف يعطيك توقعات تشبه RSPEC. كل ما يمكنك فعله مع API توقع RSPEC ، يجب أن يفعل ذلك أيضًا. يمكنك الاستيلاء على أحدث من GitHub.

specloud يساعدك على تشغيل unittests التي تشبه BDD. يمكنك تثبيته عن طريق العمل

pip install specloud

ludibrio هي مكتبة للاختبار الزوجي (السخرية ، كعباء ودمى). تثبيته عبر

pip install ludibrio

و Pycukes هي الأداة الرئيسية لـ BDD. سيتم تشغيل السيناريوهات ، وما إلى ذلك مرة أخرى ،

pip install pycukes

لمزيد من المعلومات ، يرجى قراءة وثائق الأدوات في Pypi.

وظيفة رائعة وإجابات. أردت فقط التحديث لتضمين تعيش في هذه القائمة عندما قرأت Pycukes يتم إيقافها. منشور جيد حول استخدام BDD و Django مع تعذب هنا.

يمكنك استخدام "بالتأكيد" للتأكيدات التعبيرية (كما هو الحال في RSPEC)

يعد مشروع Pyccuracy محاولة لتوفير لغة خاصة بالمجال لـ BDD في Python.

على عكس Doctest ، الذي يعمل على مستوى API ، فإنه يشفر عمليات المستوى الأعلى مثل تحميل صفحة ويب وتقديم نموذج. لم أستخدمها لكنها تبدو واعدة إلى حد ما إذا كان هذا هو ما تبحث عنه.

انا يعجبني دقة كثيراً.أقوم بتنفيذه على مشروع متوسط ​​الحجم هذه الأيام.

جرِّب أو حاول 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)

ربما أفتقد النقطة تمامًا ، لكن ما احتفظت به من ورقة BDD الأصلية كان ذلك BDD كان عادل TDD أعيد تعبئته للتأكيد على بعض أفضل الممارسات.

إذا كان تفسيري صحيحًا ، فيمكنك الحصول على إطار عمل BDD فقط عن طريق إعادة تسمية أساليب في أي xunit تطبيق. لذا فقط المضي قدمًا واستخدم المكتبة القياسية غير مألوف.

تحرير: أظهرت Google سريعة سلوك وحدة في متجر الجبن. إضافي يبحث ل BDD هناك لم يجد أي شيء آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top