前言
在我们日常测试工作中,会经常用到loadrunner这款企业级的性能测试工具,其中在录制完成性能测试脚本,并调试回放成功后。需要创建场景去进行多用户的并发压测,这时,是按每一个用例场景的要求去进行单独的并发设置,但是有些通用的设置是不变的,就需要测试人员去做重复性的工作。这里就大大降低了我们的工作效率以及工作兴趣,下面给大家演示批量创建场景的小工具,用来提升我们的日常工作效率及减少重复工作项的时间
提示:以下是本篇文章正文内容,下面案例可供参考
一.批量创建过程
1.首先将调试成功的脚本放在同一个路径下如下所示:
ps:这里获取脚本根目录:D:\创建场景测试\脚本
2. 运行Creat.exe工具并传入对应场景设置,如下所示:
ps:
①输入上面我们copy过来的脚本根路径:D:\创建场景测试\脚本
②输入并发数:目前小工具里面写死了,支持50、100、200、500、并发数设置
③获得创建成功的场景目录(若创建不成功也会生成目录)
④获得不符合命名规范的场景(这时就需要我们删除对应场景,调整对应脚本命名后重新创建了)
3. 这时,我们就可以打开创建好的场景目录:D:\创建场景测试\Controller 如下所示
ps:这里是默认在脚本根目录新建一个Controller目录
4.修改完检测出来的不符合规范的场景,我们就可以去进行压测了
ps:这里使用的是loadrunner11版本
二.工具源码分享
代码如下(示例):
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# @Version : 1.0
# @Time : 2021/3/1 23:48
# @Author :
import os,time,re,sys
#创建临时目录存放依赖模板文件
def resource_path():
if getattr(sys, 'frozen', False): #是否Bundle Resource
base_path = sys._MEIPASS
#print(base_path)
else:
base_path = os.path.abspath(".")
print("获取临时路径失败!!")
return base_path
#访问创建的临时文件夹下模板的内容
file_path = resource_path()
temp_path = file_path + '\\***\\'
scripts_folder = input("需要批量创建场景的脚本路径:")
list1 = scripts_folder.split('\\')
tstr = str(list1[len(list1) - 1])
root = scripts_folder.replace(tstr,'')
folder = root+ 'Controller\\'
time.sleep(1)
print("")
Vuser = input("批量创建场景的并发数:")
print("")
if int(Vuser) == 50 :
Standard_folder = temp_path+ 'standard_50'
time.sleep(0.5)
print(Vuser+"并发数场景创建成功!")
elif int(Vuser) == 100 :
Standard_folder = temp_path+ 'standard_100'
time.sleep(1)
print(Vuser+"并发数场景创建成功!")
elif int(Vuser) == 200 :
Standard_folder = temp_path+ 'standard_200'
time.sleep(1.5)
print(Vuser+"并发数场景创建成功!")
elif int(Vuser) == 500 :
Standard_folder = temp_path+ 'standard_500'
time.sleep(2)
print(Vuser+"并发数场景创建成功!")
else:
print("请输入正确的并发数!")
time.sleep(2)
print("")
print("场景目录:"+folder)
print("")
if not os.path.exists(folder):
os.makedirs(folder)
def lrs_create(name, msg):
full_path = folder + name + '.lrs' #也可以创建一个后缀为lrs的文件
file = open(full_path, 'w') # w 的含义为可进行读写
file.write(msg) #file.write()为写入指令
file.close()
#读取模板文件内容
Standard = open(Standard_folder,"r")
#读取文件内容后存入变量content
content = Standard.read()
#关闭模板文件
Standard.close()
#获取scripts_folder路径下所有目录及文件名称
name = os.listdir(scripts_folder)
#验证创建的场景名称是否符合规范
for i in range(0,len(name)):
strcheck = str(name[i])
illegal_str = '-'
illegal_str1 = '—'
illegal_str2 = '——'
if illegal_str in strcheck:
print('因Group命名不符合规范请删除场景: '+name[i]+'.lrs')
if illegal_str1 in strcheck:
print('因Group命名不符合规范请删除场景: '+name[i]+'.lrs')
if illegal_str2 in strcheck:
print('因Group命名不符合规范请删除场景: '+name[i]+'.lrs')
#获取folder路径下所有目录及文件名称
name1 = os.listdir(folder)
#在Controller文件夹创建scripts_folder路径下的所有脚本名称的.lrs文件
for x in name:
lrs_create(x,content)
#遍历修改创建的.lrs文件内容
for xy in name1:
xxy = folder + xy
repalace1 = content.replace("***",xxy)
with open(xxy,"w") as f2:
f2.write(repalace1)
#再次修改
for x in name1:
sss = x.replace(".lrs","")
y = folder+x
temp = open(y,"r")
contents = temp.read()
temp.close()
replace2 = contents.replace("***",sss.lower())
with open(y,"w") as f2:
f2.write(replace2)
#再次修改
for x in name1:
sss = x.replace(".lrs","")
y = folder+x
temp = open(y,"r")
contents = temp.read()
temp.close()
replace2 = contents.replace("***",sss)
with open(y,"w") as f2:
f2.write(replace2)
name1 = os.listdir(folder)
for x in name1:
sss = x.replace(".lrs","")
y = folder+x
temp = open(y,"r")
contents = temp.read()
temp.close()
replace2 = contents.replace("***",sss.lower())
with open(y,"w") as f2:
f2.write(replace2)
for x in name1:
sss = x.replace(".lrs","")
y = folder+x
temp = open(y,"r")
contents = temp.read()
temp.close()
replace2 = contents.replace("***",sss)
with open(y,"w") as f2:
f2.write(replace2)
for x in name1:
y = folder+x
temp = open(y,"r")
contents = temp.read()
temp.close()
replace2 = contents.replace("***",scripts_folder)
with open(y,"w") as f2:
f2.write(replace2)
print("")
print("此弹框10秒后自动关闭")
time.sleep(10)
#删除生成的临时文件及目录
def deleteTemp(path):
delete1 = os.listdir(temp_path)
for de1 in delete1:
os.remove(temp_path+de1)
os.rmdir(temp_path)
delete2 = os.listdir(path)
for de2 in delete2:
os.remove(path+de2)
os.rmdir(path)
return path
deleteTemp(file_path)
然后通过pyinstaller打包成一个单独的exe就可以在其它系统里面使用了
总结
此工具的思路无非就是获得已创建好并发数的场景文件(.lrs文件)并进行修改其中的内容达到识别脚本路径以及并发数以及其它的通用设置来完成我们的目的。特地在此记录下来,共勉!