Python-工具-生成测试数据,测试数据生成, 在日常开发测试中


在日常开发测试中,可能需要测试SQL执行性能,但是一般在开发环境中不存在测试所需的数据,因为生产环境的数据是有法律效益的,非法获取会触犯法律。

所以在平时的工作中只能自己根据数据标准造数据,为了避免重复编写造数脚本,编写了一个通用Python脚本。

import cx_Oracleimport stringimport randomdef id_generator(size=6, chars=string.ascii_uppercase + string.digits):        return ‘‘.join(random.choice(chars) for _ in range(size))db=cx_Oracle.connect(‘用户名/密码@服务名‘)dbcursor = db.cursor()sql1 = ‘insert into ‘sql2 = ‘ values( ‘bl = Truewhile(bl==True):    treemenuname =  input(‘请输表名,0 退出\n‘)    sql1 =  sql1 + treemenuname + ‘(‘ num = input(‘请输生成条数,0 退出\n‘)    dbcursor.execute("select col.column_name  from user_constraints con, user_cons_columns col where con.constraint_name = col.constraint_name   and con.constraint_type = ‘P‘   and col.table_name = ‘%s‘  and rownum<=1"%treemenuname)    zj1 = dbcursor.fetchone()    zj  = zj1[0]     print("主键关键字:",zj)    if(treemenuname == ‘0‘):        break    dbcursor.execute("select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns where TABLE_NAME = ‘%s‘ "%treemenuname)    rs = dbcursor.fetchall()    if(rs):        for i in range(len(rs)):            yz = rs[i]            col = yz[0]            typ = yz[1]            lgh = yz[2]            sql1 = sql1 + col            if(zj != col):                if(typ == ‘VARCHAR2‘):                    sql2= sql2 + "‘" +id_generator(lgh)+"‘"                elif(typ == ‘NUMBER‘):                    sql2= sql2 + "%s"%i                elif(typ == ‘DATE‘):                    sql2 = sql2 + "sysdate"            else:                sql2  = sql2 + "‘主键‘"                zjlgh = lgh            #            if(len(rs) != i + 1):                sql1 = sql1 + ‘,‘                sql2 = sql2 +  ‘,‘            else:                sql1 = sql1 + ‘)‘                sql2 = sql2 +  ‘)‘    else:        print("无查询结果")    for i in range(int(num)):        if(zj is not None):            #print(sql2)            dbcursor.execute(sql1 + sql2.replace(‘主键‘,id_generator(zjlgh)))            db.commit()print("查询完成")

脚本保存为.py文件即可执行。

Python-工具-生成测试数据

评论关闭