通过fixture实例自动分组测试用例
pytest在测试运行期间,最大程度的减少活动fixture的数量,如果具有参数化的fixture,那么使用它的所有测试用例将首先使用一个实例执行,然后在创建下一个fixture实例之前调用终结器。除其他外,该方式简化了对创建和使用全局状态的应用程序的测试。
下面的示例使用两个参数化的fixtures,其中一个以每个模块为基础,所有测试用例执行打印调用来展示setup、teardown流程:
运行结果:
可以看出,参数化的模块作用域的modarg资源引起了测试执行的顺序,从而导致了尽可能少的“活动”资源。在设置mod2资源之前,已执行mod1参数化资源的teardown。
特别注意的是,test_0是完全独立,且首先执行完成。然后使用mod1执行test_1,使用mod1执行test_2,使用mod2执行test_1,最后使用mod2执行test_2。
另一个otherarg资源(函数作用域)是在使用它的每个测试之前setup的,并在使用它的每个测试后teardown。