接口自动化测试要初始化数据
目前是把初始化的数据以文件的形式保存在 cos 存储上,每次运行用例之前从 cos 下载数据初始化。
但是接口依赖的数据对应的表结构会经常变,比如新增字段
那么后续维护测试用例的时候,我要把原来的文件下载下来,修改后重新上传,或者在用例的前面 写 sql 更新表结构和数据
这样我感觉维护成本很高,不方便
各位老师有没有好的解决方案推荐,红包感谢。
接口变了的话,没什么好办法,只能跟着变
我以为是红包功能求解决方案,没想到是用红包求解决方案
GPT3.5 的回答,自己识别可行性
在接口自动化测试中,如果接口依赖的数据表结构频繁变更,如新增字段,可以考虑以下几种方法来进行初始化数据:
使用数据填充工具:可以使用数据填充工具,如 Faker 等,来生成符合新表结构的测试数据。这些工具可以根据表结构自动生成随机数据,包括新增字段。
动态生成数据:可以在测试用例执行之前,通过代码动态生成符合新表结构的数据。根据新增字段的要求,可以编写代码来生成合适的测试数据,并在每次测试用例执行前进行数据生成。
数据库脚本管理:将初始化数据的操作和维护数据的操作写成数据库脚本,通过版本控制工具(如 Git)对脚本进行管理。每次表结构变更时,只需修改对应的数据库脚本,然后在运行用例之前执行脚本来更新数据。
数据库迁移工具:如果表结构的变化较大,可以考虑使用数据库迁移工具,如 Flyway 或 Liquibase。这些工具可以帮助管理数据库结构的变化,并自动执行相应的更新操作。
无论选择哪种方法,都需要保证测试数据的一致性和正确性。频繁变更表结构时,及时更新数据初始化的方法是非常重要的,以确保测试用例的准确性和可靠性。
封个初始化数据的接口。不过维护成本也不小
如果表结构发生变化的话,比如说新加了表,或者新加了字段,可以写个脚本用增量的方式同步下表结构,自动化执行前先调用下这个脚本。
不清楚你备份的数据有没有表结构,恢复是清空表还是创建表,不好细说。
读库用 json 存数据就行吧。不过是啥场景要把文件存 cos 去再从 cos 读,看描述是配置文件和库表有关联,直接读库不行么
没看懂问题,怎么听怎么不合理。
为什么数据库增加字段还能影响你的自动化用例?自动化里面做什么逻辑?
莫非你的意思是,你这个接口自动化里需要去创建一个 table ?
文件里面存的是 接口测试依赖的建库建表,插入数据的 sql 语句
测试之前是 docker 启用的一个完全空的数据库,必须插入数据才能测试,但是相关的表结构变化了,新增字段了,维护很麻烦
json 能存很多数据吗?大几百上千条测试用例的数据,可能一个测试用例的相关建库建表数据语句就有 几百条
是的,我在帖子里面说了,只能在脚本前面加一句新增字段的 sql 语句
一些有默认值的就更新为默认值,有一些存在业务逻辑的字段就要把文件下载下来,修改文件里面 sql 语句修改数据,再上传,觉得效率有点低
请问你的自动化是做成代码的还是在你们平台上的呢?如果是代码的,其实建议如果单个用例需要的字段量不是很大的话,可以把测试数据直接写在你的.py 文件里
所以最终还是维护 mysql 表,这个就跑不了,用文件形式维护 sql 是可以的,但是为啥要去传 cos,直接放 git 里不行么,也好维护
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
来达到指定字段插入值的目的;csv 只是一种文本格式,简单说就是 value1,value2,value3,value4
等通过逗号去隔开不同数据的文本格式,人眼上有可读性,格式简单也方便统一改,网上搜一下就可以了。python 本身也有内置的 csv 文件解析类可以 import。
这种方式可以试下适不适合:用老的测试数据恢复,再用编写个脚本 根据开发库动态用增量的方式补充表结构(用例执行前自动调用脚本,记录下缺少的表,缺少的字段(包括对应的表名))
如果比较理想的话,动态新增的字段没有值,但不影响用例运行;如果新增的字段必须有值用例才能跑的话,估计只能手工改测试数据了。
测试用例都跑完后,可以再用一个脚本 根据记录下来缺少的表和字段,去维护下服务器上的测试数据文件。
我之前的方案,自动化环境中每次运行测试,创建新的 docker 数据库,将建表等初始化语句从 QA 环境同步后,将基础数据写入到数据库中,业务数据则具体维护,如低频改动的,也可以放到基础数据中。
这块其实没啥好办法,用例失败只能及时维护。能做到最好的情况,则根据表的数据结构,将变动的字段,做相应处理后再写入到数据库中。