pytest-fixture执行顺序
作用域-scope
作用域越大,越先执行,session>package>module>class>function。
是否自动调用fixture
自动调用(autouse=True)优先,手动调用(autouse=False)后执行。
fix_b、fix_c自动调用先执行,fix_a手动调用后执行。
同是自动调用,存在于相同文件
根据fixture函数名称排序。
同是自动调用,存在于不同文件
- 相同作用域下,外层conftest.py里的fixture优先执行,内层conftest.py里的fixture后执行。
- 在conftest.py里的fixture优先执行,在test用例里的后执行。
同手动调用
同手动调用时,根据用例方法中fixture填写顺序。
fixture依赖关系
相同作用域下,相对于依赖了其他fixture的fixture,被依赖的fixture优先执行。
fix_c通过被fix_a依赖而执行,fix_a由于名称原因比fix_b先执行,所以顺序为fix_c>fix_a>fix_b。
注意:作用域大的不可依赖作用域小的,否则报错ScopeMismatch。
总结
优先根据作用域排序,其次看是否为自动调用,最后再判断是否有依赖