133

python 有哪些最先进的框架和工具可用于实践行为驱动开发?尤其是为 ruby​​ 找到与 rspec 和 mocha 类似的工具会很棒。

4

10 回答 10

48

Lettuce的意思是成为python的类似黄瓜的工具:http: //lettuce.it/

您可以在 github.com/gabrielfalcao/lettuce 获取源代码

于 2010-05-05T23:20:18.953 回答
46

我真的建议表现

在寻找 Python 的 Cucumber 克隆时,我开始使用生菜,但发现它是一个设计非常笨拙的复制品。非常不合常理。

然后我发现了表现,并且对此非常满意。

于 2012-07-18T14:23:39.960 回答
38

Ian Bicking建议使用doctest进行行为驱动设计:

我个人倾向于在行为驱动的设计风格中使用鼻子虚空模拟。具体来说,nose 的规范插件非常适合 BDD。

于 2008-10-24T02:06:21.247 回答
29

我推荐你使用一套工具来帮助程序员进行 BDD 和 TDD 的实践。该工具集由:pycukesspecloudludibrioshould-dsl组成。

should-DSL会给你类似 RSpec 的期望。你可以用 RSpec 期望 API 做的所有事情,should-dsl 也可以。您可以从 Github获取最新版本。

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

pip install specloud

Ludibrio是一个用于测试替身(Mocks、Stubs 和 Dummies)的库。通过安装它

pip install ludibrio

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

pip install pycukes

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

于 2010-06-08T17:20:57.047 回答
11

很棒的帖子和答案。只是想更新以将Freshen包含在此列表中,因为我读到 pycukes 已停产。一篇关于将 BDD 和 Django 与 Freshen 结合使用的好帖子在这里

于 2010-11-12T20:28:16.820 回答
9

您可以将“确定”用于表达性断言(就像在 RSpec 中一样)

于 2012-08-08T07:17:40.633 回答
8

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

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

于 2009-05-01T18:04:03.830 回答
6

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

于 2009-06-02T15:47:25.237 回答
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)
于 2012-07-01T03:53:53.927 回答
4

我可能完全没有抓住重点,但我保留的原始 BDD 论文是 BDD 只是TDD重新打包以强调一些最佳实践。

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

编辑:快速谷歌在Cheese Shop中发现了一个Behavior模块。进一步搜索BDD 没有找到其他任何东西。

于 2008-10-23T21:19:06.117 回答