作者:进阶的小猫

08-pytest实践之teardown的用法探索

背景

在进行pytest编写测试用例时,部分场景需要进行测试数据清理or恢复现场的操作。
首先想到的是使用pytest原生支持的teardown功能,因teardown能够实现在测试用例执行的任何阶段assert失败或者异常退出后都执行清理操作,确保测试后测试现场完成了恢复。
接着去调研了pytest中teardown的一些功能和使用方法,总结大致如下表格所示:
在这里插入图片描述
原生的teardown功能作用在不同的域级别,但是共性是只执行一次或者每个方法结束后执行一次;支持的场景有所欠缺。
业务接口自动化测试实践中,需要实现的是对于同一个类里的不同测试case,能够分别实现针对自己的teardown功能,因为实际业务中,不同测试用例需要不同的数据恢复/数据清理的逻辑。



解决方法&实践验证

就这一问题和pytest框架交流群的小伙伴进行了探讨,得出了以下的几种方案,都可以解决上述问题。各有优点,下面一一列举,供大家参考:

使用fixture + yield (只能传fixture参数–有局限)

使用fixtrue + yield自定义方法实现测试后的数据清理,不

lock