我是假设的新手,我正在寻找一种方法来生成一对相似的递归对象。
我对单个对象的策略类似于假设文档中的这个示例。
我想测试一个采用一对递归对象 A 和 B 的函数,这个函数的副作用应该是A==B
.
我的第一种方法是编写一个获取两个独立对象的测试,例如:
@given(my_objects(), my_objects())
def test_is_equal(a, b):
my_function(a, b)
assert a == b
但缺点是假设不知道这两个对象之间存在依赖关系,因此它们可能完全不同。这是一个有效的测试,我也想测试它。
但我也想测试只是略有不同的复杂递归对象。
也许该假设能够将测试失败的一对非常不同的对象缩小为测试以相同方式失败的一对仅略有不同的对象。