用python练习BDD

时间:2008-10-23 20:30:45

标签: python testing bdd

哪些是python用于练习行为驱动开发的最先进的框架和工具?特别是找到类似rspec和mocha的类似红宝石的工具会很棒。

10 个答案:

答案 0 :(得分:47)

生菜意味着成为一种类似黄瓜的python工具:http://lettuce.it/

您可以在github.com/gabrielfalcao/lettuce

获取来源

答案 1 :(得分:45)

我真的推荐behave

寻找Python的黄瓜克隆,我开始使用生菜,但发现它是一个非常笨拙设计的复制品。非常Unpythonic。

然后我发现了行为,并且对它非常满意。

答案 2 :(得分:36)

Ian Bicking建议将doctest用于行为驱动设计:

我个人倾向于在行为驱动的设计风格中使用nosevoidspace mock。具体来说,鼻子的规格plugin非常适合BDD。

答案 3 :(得分:29)

我建议您使用一组工具来帮助程序员实施BDD和TDD。此工具集由以下内容组成:pycukesspecloudludibrioshould-dsl

Should-DSL会给你RSpec般的期望。您可以使用RSpec期望API执行的所有操作,ds-dsl也可以。您可以抓取latestversion from Github

SpecLoud可帮助您运行类似BDD的单元测试。您可以通过执行

来安装它
pip install specloud

Ludibrio是测试双打(模拟,存根和傻瓜)的库。通过

安装
pip install ludibrio

PyCukes是BDD的主要工具。它将运行场景等。再次,

pip install pycukes

有关详细信息,请阅读PyPi上的工具文档。

答案 4 :(得分:11)

很棒的帖子和答案。我只想更新以在此列表中包含Freshen,因为我读取pycukes已停止。关于使用BDD和Django与Freshen的好帖子是here

答案 5 :(得分:9)

您可以使用"sure"表达断言(就像在RSpec中一样)

答案 6 :(得分:8)

Pyccuracy项目旨在为Python中的BDD提供特定于域的语言。

与在API级别工作的doctest不同,它对更高级别的操作进行编码,例如加载网页和提交表单。我没有使用它,但如果你正在寻找它,它看起来有点大有希望。

答案 7 :(得分:6)

我非常喜欢Pyccuracy。我这几天正在中型项目上实施它。

答案 8 :(得分: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)

答案 9 :(得分:4)

我可能完全忽视了这一点,但我保留的original BDD paper是因为BDD只是TDD重新包装以强调一些最佳实践。

如果我的解释是正确的,您可以通过在任何xUnit实现中重命名方法来获得BDD框架。所以请继续使用标准库的unittest

编辑:快速谷歌在Behaviour中调出Cheese Shop个模块。对BDD进一步searching没有找到任何其他内容。