用python实现BDD
哪些是最先进的框架和工具可用于Python实践行为驱动开发? 特别是find类似的工具rspec和摩卡ruby将是伟大的。
Ian Bickingbuild议使用doctest进行行为驱动devise:
我个人倾向于在行为驱动的devise风格中使用鼻子和空隙空间模拟 。 具体来说,鼻子的规格插件是非常好的BDD。
生菜意味着成为python的黄瓜般的工具: http : //lettuce.it/
您可以从github.com/gabrielfalcao/lettuce获取源代码
我真的推荐performance 。
寻找一个黄瓜克隆的Python,我开始使用生菜,但发现它是一个非常笨重的devise复制品。 很Unpythonic。
然后我发现了行为,并且对此感到非常满意。
我build议你使用一套开发的工具来帮助程序员实践BDD和TDD。 这套工具由pycukes , specloud , ludibrio和should-dsl组成 。
应DSL将给你RSpec的期望。 您可以使用RSpec期望API来做的所有事情,应该是dsl也是。 你可以从Github获取最新版本 。
SpecLoud可以帮助您运行类似于BDD的unit testing。 你可以通过做安装
pip install specloud
Ludibrio是一个testing双打(Mocks,Stubs和Dummies)的图书馆。 通过安装它
pip install ludibrio
PyCukes是BDD的主要工具。 它将运行场景等。再次,
pip install pycukes
欲了解更多信息,请阅读PyPi的工具文档。
伟大的职位和答案。 只是想更新,包括清新 ,因为我读pycukes已停产。 有关使用BDD和Django与Freshen的好post在这里 。
你可以使用“确定”来expression断言(就像在RSpec中一样)
Pyccuracy项目旨在为Python中的BDD提供一个特定领域的语言。
不同于在API级别工作的doctest,它编码更高级别的操作,例如加载网页和提交表单。 我没有使用它,但它看起来有点有希望,如果这是你在找什么。
我喜欢Pyccuracy很多。 我现在在一个中型项目上实施它。
尝试pyspecs 。 在开发过程中使testing易于阅读和持续运行是我在创build这个项目时的两个主要目标。
testing代码:
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重新包装,以强调一些最佳做法。
如果我的解释是正确的,你可以通过在任何xUnit实现中重命名方法来获得一个BDD框架。 所以,继续使用标准库的unit testing。
编辑:一个快速谷歌在奶酪店发现 行为模块。 进一步寻找 BDD没有find其他的东西。