测试人社区

接口产生脏数据怎么自动化处理

前置条件
有些接口的数据是必须要作为入参循环复用的,在单个py文件里面已经保证了数据形成闭环,即使用后清空的操作;
问题
但是最近网络不稳定,导致脚本执行的时候因为网络问题,某些用例报错,从而数据不能按预期形成闭环,就产生了脏数据。因为数据是写入MySQL的,所以用例就需要手动去清除脏数据来维护了。
有时候排查这些脏数据的生成都比较耗时,想请教大家对于这种情况有没有好的处理方法?

可以推动公司在生产环境搭建影子库,对于测试数据写进影子库即可

几个我想到的方法:

  • 数据带有明显的标识;比如:你所有的数据都是以xxxxx_xxxx这种格式开头,那么你setUp()/tearDown的时候先清除这些数据
  • 数据库备份;每一次接口自动化前先把数据库备份到另外一个B数据库,然后做接口自动化的时候就是用这个数据库,即使有脏数据也没问题,后面删除就好了;

请问影子库是什么意思?

备份数据库这个是个思路,可以把逻辑依赖很严重的库备份,失败了就同步,我调研一下,谢谢。

teardown不是一个清理数据的好地方,这个地方会因为进程停止经常得不到执行。在setup_class或者更前置的过程中完成清理会更好些,teardown只作为辅助。

利用数据库的恢复也是一个办法。比如用docker随时还原环境和数据。

很早之前在一次大会上听到的概念~

谢谢老师提供的思路。
有一点不是很清楚,把数据清理放到setup_class中完成是怎么执行呢?
我理解一下是这样吗:
比如:A.py 和B.py都要用到一个原始数据,然后在A.py中使用完成后,不在A.py的teardown中清理,反而去B.py的setup_class中进行清理吗?

感谢,我了解一下,看起来好深奥 :joy: