python多线程http压力测试脚本
本文实例为大家分享了python多线程http压力测试的具体代码,供大家参考,具体内容如下
#coding=utf-8
importsys
importtime
importthread
importhttplib,urllib
importrandom
importuuid
importlogging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s',
datefmt='%a,%d%b%Y%H:%M:%S',
filename='测试脚本日志.log',
filemode='w')
deflog_uncaught_exceptions(exception_type,exception,tb):
logging.critical(''.join(traceback.format_tb(tb)))
logging.critical('{0}:{1}'.format(exception_type,exception))
sys.excepthook=log_uncaught_exceptions
#网关地址
addr="172.18.2.4"
port=8080
thread_count=15#单次并发数量
requst_interval=10#请求间隔(秒)
test_count=sys.maxsize#sys.maxsize#指定测试次数
#字段说明,必须一一对应
#login为空表示使用随机用户名
param_list=[
{"login":"user1","password":"qweqwe12"},
]
now_count=0
lock_obj=thread.allocate()
defsend_http():
globalnow_count
httpClient=None
try:
foruserinuser_list:
tmp_user=user["login"]
iftmp_user.strip()=='':
tmp_user=str(uuid.uuid1())+str(random.random())
printtmp_user
params=urllib.urlencode({"operationData":
[{"login":tmp_user,"password":user["password"]}]})
headers={"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
httpClient=httplib.HTTPConnection(addr,port,timeout=5)
httpClient.request("POST","/simple/spider.task.distribute",params,headers)
response=httpClient.getresponse()
print'发送数据:'+params
print'返回码:'+str(response.status)
print'返回数据:'+response.read()
logging.info('发送数据:'+params)
logging.info('返回码:'+str(response.status))
logging.info('返回数据:'+response.read())
#printresponse.getheaders()#获取头信息
sys.stdout.flush()
now_count+=1
exceptException,e:
printe
logging.info(e)
finally:
ifhttpClient:
httpClient.close()
deftest_func(run_count):
globalnow_count
globalrequst_interval
globallock_obj
cnt=0
whilecnt
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。