比如测试创建订单,但是再跑这个接口时就会提示该订单已存在。
目前主要用的是 postman 和 python 的 request 做接口。
想问下这两个地方要如何删除之前跑的生成的数据
1、每次都跑完整流程,换订单号
2、跑完后调用删数据接口,或者直接操作数据库/缓存删数据
我们这的规范是同一个环境, 自动化测试跑 n 遍,要求每一次必须互不影响,互相不依赖。 所以我们所有的数据都是在代码里创建的。创建的时候名称,标题,id 啥的生成必须是随机字符串。 所以我们基本不考虑删数据的事。
如果是测试环境,对唯一性有要求的字段里加上时间戳基本上就不会重复了,而且测试环境的话也没什么必要删数据;
如果是生产环境就要谨慎一点,起码要数据隔离,别把测试数据暴露给客户或者污染真实生产数据了
数据清理、接口依赖等场景在接口测试中经常碰到,做法可能有多种,满足自己的需求即可:
1、随机生成一些数据,保证每次接口请求参数不一样(适合测试环境);
2、setup、test、teardown 三段式的方式清理数据,可以每个 testcase 清一次,也可以是 testsuit 清理一次;
3、数据库备份还原方式,通过 sql、dump、或者镜像方式都可以,在每次执行自动化测试之前初始化。
不知道你想要多自动化?如果是自动化,teardown 的时候自动删就行了。如果是人工测试用,那总归得人去触发的,系统不知道你啥时候用完数据。
不过测试环境其实没必要删,每次都用新数据那老数据删不删都无所谓的,想办法让数据尽量不容易撞车就行。
创建订单号用(用户 ID+ 时间戳(毫秒 or 微秒)+ 随机数),或者再转(16 进制,62 进制)生成的订单号就算是并发跑,都很难会重复
结合实际的业务场景来,不是所有的数据都是可清除的。
分享一下我们当前的做法:
以上,仅供参考。
导库清库是个比较合适的方案