最近在学习在用jmeter做有关性能测试方面的知识,感觉到对于一个测试人员需要掌握的东西真的是太多,心累。
本次主要说说针对我们测试人员需要的数据怎么进行生成,毕竟当数据过百万时还是很考验开发人员的sql响应时间,会影响页面的反应时间和消耗服务器资源
下面进入主题。
工具:
python3
Faker 伪造数据这里有个简单使用的说明 下载方式 pip install faker
pymysql
下面是代码
import pymysql
from faker import Faker
import time
import random
fake = Faker(); # 创建对象
fake = Faker("zh_Cn"); # 设置语言
def myList(value):
'''
生成一个列表,[('admin1', 'admin1qq.com', 'hahaadmin1'),...]
:param value: 自定义的数据量
:return: new_list
'''
new_list = [] # 新建一个空列表用来存储元组数据
start = time.time() #记录开始时间
for i in range(0, value):
'''
针对一些唯一要求添加的随机,如果有的表需要关联特定的数据,可以这样
random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
'lemon'
这里有一些简单的随机函数的使用 https://www.cnblogs.com/yanzi-meng/p/7827165.html
'''
nub = random.randint(0, 100)
username = fake.name() + str(nub);
password = fake.ean8();
email = fake.safe_email();
tup = (username, password, email) # 构造元组变量名养成习惯与表名一致
new_list.append(tup) # [(),(),()...]
end = time.time() #记录结束时间
print("*" * 5 + "generate list ok" + "*" * 5)
print("数据生成使用时间(秒:)" + str(end - start))
return new_list
def Insert_Data(dataList):
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", db="XXXX", port=3306);
# 创建游标
cursor = db.cursor();
'''
数据库插入
:param newList: 传入的列表数据
:return:
'''
start = time.time()
try:
sql = "insert into t_user(username,password,email) values(%s,%s,%s)" # 要插入的数据
cursor.executemany(sql, dataList) # 执行插入数据
db.commit()
cursor.close()
db.close()
print('insert ok')
except Exception as e:
print(e)
end = time.time()
print("数据插入使用时间(秒:)" + str(end - start))
if __name__ == '__main__':
start = time.time()
newList = myList(1000000)
Insert_Data(newList)
end = time.time()
print("总共使用时间:"+str(end - start))
代码基本原理根据这里产生 然后做了些调整数据的生成
下面是我生成数据所使用的时间,大多数时间浪费在了生成数据上面,毕竟要做一些处理,百万数据插入数据库用例一分钟十七秒