2017-08-30 92 views
1

我刚将一个pytest测试套件从quickcheck迁移到hypothesis。这工作得很好(并立即发现了一些隐藏的边缘案例错误),但我看到的一个主要区别与两个物业经理之间的测试隔离有关。pytest-假设运行之间的测试隔离

quickcheck似乎只是用不同的参数值多次运行测试函数,每次运行我的函数范围的灯具。这也导致pytest的输出中有更多的点。

hypothesis然而,似乎多次运行测试函数的主体,这意味着例如单个运行之间没有事务回滚。这意味着当我的测试向DB中插入某些内容时,我无法可靠地断言多个数据库条目,因为上一次运行的所有条目都仍然存在。

我在这里错过了一些明显的东西,或者是这种预期的行为?如果是这样,是否有一种方法可以获得运行假设的数量作为变量在测试中使用?

回答

0

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

假设需要工作的方式(这是pytest-quickcheck的很多改进的来源)并不符合pytest关于测试执行的假设。问题是mostly on the pytest side - 目前的pytest夹具系统有一些非常出色的假设,关于如何运行一个测试不能很好地控制测试执行的情况,以及上次我试图解决这个问题时,我最终沉没了在放弃之前进行一周的工作,基本上说要么是pytest方面需要改变的东西,要么是如果它会变得更好的话,那么就是someone needs to fund this work

+0

我明白了。感谢您花时间回答。我正在努力解决这个问题,在我的断言中考虑到了这一点。事实上,它也有一些优点。 :-) 顺便说一句,有没有办法让测试中使用的运行次数假设已经完成了? 再次感谢! –