Python 测试假设运行之间的测试隔离
我刚刚将pytest测试套件从Python 测试假设运行之间的测试隔离,python,pytest,quickcheck,python-hypothesis,Python,Pytest,Quickcheck,Python Hypothesis,我刚刚将pytest测试套件从quickcheck迁移到hyporation。这非常有效(并立即发现了一些隐藏的边缘案例bug),但我看到的一个主要区别与两个属性管理器之间的测试隔离有关 quickcheck似乎只是使用不同的参数值多次运行测试函数,每次运行我的函数范围的装置。这也会在pytest的输出中产生更多的点 假设但是似乎只多次运行测试函数的主体,这意味着在单独运行之间没有事务回滚。这就意味着,当我的测试向数据库中插入一些东西时,我无法可靠地断言大量的数据库条目,例如,因为上一次运行中的
quickcheck
迁移到hyporation
。这非常有效(并立即发现了一些隐藏的边缘案例bug),但我看到的一个主要区别与两个属性管理器之间的测试隔离有关
quickcheck
似乎只是使用不同的参数值多次运行测试函数,每次运行我的函数范围的装置。这也会在pytest的输出中产生更多的点
假设
但是似乎只多次运行测试函数的主体,这意味着在单独运行之间没有事务回滚。这就意味着,当我的测试向数据库中插入一些东西时,我无法可靠地断言大量的数据库条目,例如,因为上一次运行中的所有条目仍然会挂起
我是否遗漏了一些明显的东西,或者这是预期的行为?如果是这样的话,有没有一种方法可以得到假设已经完成的运行次数,作为测试中使用的变量?恐怕您有点卡住了,目前没有任何好的解决方案
假设需要工作的方式(这是它比pytest quickcheck有很多改进的来源)不符合pytest关于测试执行的假设。问题是-当前的pytest fixture系统对如何运行测试有一些非常成熟的假设,这些假设在控制测试执行方面不起作用,上一次我尝试解决这个问题时,我在放弃之前花了大约一周的时间,然后基本上说要么最糟糕的方面需要改变,要么会变得更好。我明白了。感谢您抽出时间回答。我目前正设法解决这个问题,在我的资产中考虑到这一点。事实上,它也有一些优势。:-)顺便问一下,是否有一种方法可以获得假设作为变量在测试中使用的运行次数?再次感谢!