เฟรมเวิร์กและเครื่องมือขั้นสูงสุดใดที่มีสำหรับ python สำหรับฝึก Behavior Driven Development โดยเฉพาะอย่างยิ่งการหาเครื่องมือที่คล้ายกันเช่น rspec และ mocha สำหรับทับทิมจะดีมาก
เฟรมเวิร์กและเครื่องมือขั้นสูงสุดใดที่มีสำหรับ python สำหรับฝึก Behavior Driven Development โดยเฉพาะอย่างยิ่งการหาเครื่องมือที่คล้ายกันเช่น rspec และ mocha สำหรับทับทิมจะดีมาก
คำตอบ:
Ian Bickingแนะนำให้ใช้หลักปฏิบัติสำหรับการออกแบบที่ขับเคลื่อนด้วยพฤติกรรม:
โดยส่วนตัวฉันมักจะใช้จมูกและvoidspace ล้อเลียนในรูปแบบการออกแบบที่ขับเคลื่อนด้วยพฤติกรรม โดยเฉพาะปลั๊กอินสำหรับจมูกนั้นยอดเยี่ยมสำหรับ BDD
ผักกาดหอมหมายถึงเครื่องมือคล้ายแตงกวาสำหรับงูหลาม: http://lettuce.it/
คุณสามารถหาแหล่งที่มาได้ที่ github.com/gabrielfalcao/lettuce
ฉันแนะนำให้คุณใช้ชุดเครื่องมือที่พัฒนาขึ้นเพื่อช่วยโปรแกรมเมอร์ในการฝึกฝน BDD และ TDD ชุดเครื่องมือนี้ประกอบด้วย: pycukes , specloud , ludibrioและควร-DSL
Should-DSLจะทำให้คุณมีความคาดหวังเหมือน RSpec ทุกสิ่งที่คุณสามารถทำได้ด้วย RSpec expectation API ก็ควร -dsl เช่นกัน คุณสามารถคว้าlatestversion จาก Github
SpecLoudช่วยคุณในการรัน unittests เหมือน BDD คุณสามารถติดตั้งได้โดยทำ
pip install specloud
Ludibrioเป็นห้องสมุดสำหรับการทดสอบคู่ (Mocks, Stubs and Dummies) ติดตั้งผ่าน
pip install ludibrio
และPyCukesเป็นเครื่องมือหลักสำหรับ BDD มันจะเรียกใช้สถานการณ์ ฯลฯ อีกครั้ง
pip install pycukes
โพสต์และคำตอบที่ยอดเยี่ยม แค่อยากจะอัปเดตเพื่อรวมFreshenไว้ในรายการนี้เนื่องจากฉันอ่าน pycukes ถูกยกเลิก โพสต์ที่ดีเกี่ยวกับการใช้ BDD และ Django กับสดชื่นเป็นที่นี่
คุณสามารถใช้คำว่า "sure"เพื่อการยืนยันที่ชัดเจน (เช่นเดียวกับใน RSpec)
โครงการ Pyccuracy เป็นความพยายามในการจัดหาภาษาเฉพาะโดเมนสำหรับ BDD ใน Python
ซึ่งแตกต่างจาก doctest ซึ่งทำงานในระดับ API คือเข้ารหัสการดำเนินการระดับสูงกว่าเช่นการโหลดหน้าเว็บและการส่งแบบฟอร์ม ฉันไม่ได้ใช้มัน แต่ดูเหมือนว่าจะมีแนวโน้มดีถ้านั่นคือสิ่งที่คุณกำลังมองหา
ฉันชอบPyccuracyมาก วันนี้ฉันกำลังใช้มันในโครงการขนาดกลาง
ลอง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 ดังนั้นเพียงใช้Unittestของไลบรารีมาตรฐานต่อไป
แก้ไข: รวดเร็วเปิด Google ขึ้นพฤติกรรมโมดูลในร้านชีส นอกจากนี้การค้นหาสำหรับ BDD มีไม่พบสิ่งอื่นใด