python并发测试脚本语言_python并发测试脚本

本文介绍了一个使用Python编写的并发测试脚本,用于进行压力测试。通过创建`RequestThread`类,实现了HTTP请求的并发执行,并统计了响应成功、失败、异常的数量,以及响应时间的最大值和最小值。在300并发测试中,脚本还分析了3秒内响应的请求占比。此外,脚本在iteye上进行测试时,有一次IP被封的经历。
摘要由CSDN通过智能技术生成

这两天要做性能测试,自己没事用python写了个脚本,用于压力测试

# -*- coding: utf8 -*-

# code by Shurrik

import threading, time, httplib

HOST = "www.baidu.com"; #主机地址 例如192.168.1.101

PORT = 80 #端口

URI = "/?123" #相对地址,加参数防止缓存,否则可能会返回304

TOTAL = 0 #总数

SUCC = 0 #响应成功数

FAIL = 0 #响应失败数

EXCEPT = 0 #响应异常数

MAXTIME=0 #最大响应时间

MINTIME=100 #最小响应时间,初始值为100秒

GT3=0 #统计3秒内响应的

LT3=0 #统计大于3秒响应的

# 创建一个 threading.Thread 的派生类

class RequestThread(threading.Thread):

# 构造函数

def __init__(self, thread_name):

threading.Thread.__init__(self)

self.test_count = 0

# 线程运行的入口函数

def run(self):

self.test_performace()

def test_performace(self):

global TOTAL

global SUCC

global FAIL

global EXCEPT

global GT3

global LT3

try:

st = time.time()

conn = httplib.HTTPConnection(HOST, PORT, False)

conn.request('GET', URI)

res = conn.getresponse()

#print 'version:', res.version

#print 'reason:', res.reason

#print 'status:', res.status

#print 'msg:', res.msg

#print 'headers:', res.getheaders()

start_time

if res.status == 200:

TOTAL+=1

SUCC+=1

else:

TOTAL+=1

FAIL+=1

time_span = time.time()-st

print '%s:%f\n'%(self.name,time_span)

self.maxtime(time_span)

self.mintime(time_span)

if time_span>3:

GT3+=1

else:

LT3+=1

except Exception,e:

print e

TOTAL+=1

EXCEPT+=1

conn.close()

def maxtime(self,ts):

global MAXTIME

print ts

if ts>MAXTIME:

MAXTIME=ts

def mintime(self,ts):

global MINTIME

if ts

MINTIME=ts

# main 代码开始

print '===========task start==========='

# 开始的时间

start_time = time.time()

# 并发的线程数

thread_count = 300

i = 0

while i <= thread_count:

t = RequestThread("thread" + str(i))

t.start()

i += 1

t=0

#并发数所有都完成或大于50秒就结束

while TOTAL50:

print "total:%d,succ:%d,fail:%d,except:%d\n"%(TOTAL,SUCC,FAIL,EXCEPT)

print HOST,URI

t+=1

time.sleep(1)

print '===========task end==========='

print "total:%d,succ:%d,fail:%d,except:%d"%(TOTAL,SUCC,FAIL,EXCEPT)

print 'response maxtime:',MAXTIME

print 'response mintime',MINTIME

print 'great than 3 seconds:%d,percent:%0.2f'%(GT3,float(GT3)/TOTAL)

print 'less than 3 seconds:%d,percent:%0.2f'%(LT3,float(LT3)/TOTAL)

300并发试着测了iteye几次,还是被封了一次IP……

5

1

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-07-13 15:52

浏览 27877

评论

3 楼

晴天i

2016-07-17

写得真好,真好,配得注释也很好!!

38687d1a1ad71d37c86f287056834d1a.gif 

38687d1a1ad71d37c86f287056834d1a.gif

2 楼

晴天i

2016-07-17

能评论了吗

1 楼

u010530067

2015-11-06

怎么运动你写的这个脚本?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值