4

我刚刚将一个 pytest 测试套件quickcheckhypothesis. 这工作得很好(并立即发现了一些隐藏的边缘案例错误),但我看到的一个主要区别与两个属性管理器之间的测试隔离有关。

quickcheck似乎只是用不同的参数值多次运行测试函数,每次运行我的函数范围固定装置。这也会在 pytest 的输出中产生更多的点。

hypothesis然而,似乎多次只运行测试函数的主体,这意味着例如在各个运行之间没有事务回滚。这意味着当我的测试向数据库中插入一些东西时,我不能可靠地断言一些数据库条目,因为上一次运行的所有条目仍然会挂起。

我在这里遗漏了一些明显的东西还是这是预期的行为?如果是这样,有没有办法让假设已经完成的运行次数作为变量在测试中使用?

4

1 回答 1

2

恐怕你有点卡住了,目前没有任何好的解决方案来解决这个问题。

Hypothesis 需要工作的方式(这是它对 pytest-quickcheck 的许多改进的来源)不符合 pytest 关于测试执行的假设。问题主要出在 pytest 方面——当前的 pytest 夹具系统有一些非常成熟的假设,即您如何运行测试,这些假设不能很好地控制测试执行,而我上次尝试解决这个问题时,我最终在放弃之前投入了大约一周的工作,基本上说要么在 pytest 方面需要改变一些东西,要么如果它会变得更好,就需要有人资助这项工作。

于 2017-09-01T08:08:51.943 回答