1

我正在编写一个用于试验进化算法的包,不用说,它包括很多随机方法。现在,我想为这个包编写一些(doc)测试,这样我就可以验证一切正常,但是我遇到了“大多数时候”测试应该是真的情况。感觉好像我可能以错误的方式接近这个问题,但我仍然想听听你对此的一些想法。

例如,我的文档测试中有这样的内容:

>>> a = Genome()
>>> b = Genome()
>>> a.mutate()
>>> a != b
True # Well, most of the time.

实施这样的测试意味着测试有时会在一切正常时失败。

我在进行测试之前阅读了修复 RNG 种子的建议,但是我必须确保在编写测试之前一切正常,因为测试应该包括预期的结果。

4

1 回答 1

1

你可以让它失败的概率可以忽略不计,例如

a = Genome()
genomes = []
for i in range(100):
    b = Genome()
    b.mutate()
    genomes.append(b)
assert any(a != b for b in genomes)

如果您最初的测试大部分时间都成功了,那么对于所有实际目的来说,这个测试总是会成功。

该测试还可以对允许匹配的基因组数量施加合理的限制。

可以说,该测试的读数不如原始测试好。也许在这里使用 doctests 是错误的方法,您应该编写单独的单元测试。

于 2012-04-05T14:38:18.930 回答