gpt4 book ai didi

language-agnostic - 我需要一个基本的具体示例来说明如何将 TDD 与按契约(Contract)设计一起使用

转载 作者:行者123 更新时间:2023-12-04 15:43:49 26 4
gpt4 key购买 nike

我见过很多类似this的问题和 this .有些人认为 TDD 和契约式设计之间存在重叠,而另一些人则说它们是互补的,我偏向于第二种,所以我需要一个非常基本、正确和完整的示例,用任何语言甚至是伪造的来说明如何使用它们在一起。

最佳答案

这是一个有点棘手的问题,因为“测试驱动开发”(TDD) 和“按契约(Contract)设计”(DbC) 都暗示了您的开发过程。 (一般来说测试/契约写在代码之前)

不过,由于您询问的是代码示例,因此您更感兴趣的是同时使用测试和契约(Contract)会是什么样子。这是一个例子:

def sort_numbers(nums: List[int]) -> List[int]:
'''

Tests:
>>> sort_numbers([4, 1, 2])
[1, 2, 4]
>>> sort_numbers([])
[]

Contracts:
post: len(__return__) == len(nums)
post: __return__[0] <= __return__[-1]

'''
return sorted(nums)

测试

我们使用测试来检查特定输入如何影响输出。例如,对数字 [4, 1, 2] 进行排序生成列表 [1, 2, 4] .此外,对空列表进行排序会生成空列表。

(这些测试是使用 doctest 编写的,可以使用 python -m doctest <file> 进行检查)

契约(Contract)

无论输入是什么,我们都使用合约来确保某些属性保持不变。在这个例子中,我们断言:

  1. 返回的列表与输入列表的长度相同。
  2. 返回的第一项始终小于或等于返回的最后一项。

(这些合约是用 PEP-316 语法写的,可以用 CrossHair 来检查)

关于language-agnostic - 我需要一个基本的具体示例来说明如何将 TDD 与按契约(Contract)设计一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com