Python3接口性能测试实例代码


Posted in Python onJune 20, 2021

首先来看实例代码:

# -*- coding:utf-8 -*-


import requests
import datetime
import time
import threading

'''
allow_redirects = False禁止重定向,添加在request参数后
get请求用params传参
post请求,数据类型form,用data传参
post请求,数据类型form,用data传参
post请求,数据类型json,json传参
timeout:请求超时时间,添加在request参数后
nub = 10#设置并发线程数
ResponseTime=float(result.elapsed.microseconds)/1000 #获取响应时间,单位ms
ThinkTime = 0.5#设置思考时间
AverageTime = "{:.3f}".format(float(sum(myrequest.times))/float(len(myrequest.times)))#计算数组的平均值,保留3位小数
totaltime = float(hour)*60*60 + float(minute)*60 + float(second) #计算总的思考时间+请求时间
'''

class url_request:
    times = []
    error = []
    def weather_DC(self):
        myrequest=url_request()
        weatherinfo_search = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'
        params = {'key': 'cd1b11e80ffac05253196aa2a1233f25',
                  'city': 110101,
                  'extensions': 'base',
                  'output': 'JSON'}

        result = requests.get(url=weatherinfo_search, params=params)
        print("状态码:",result.status_code)
        print("返回报文:",result.text)
        ResponseTime=float(result.elapsed.microseconds)/1000
        myrequest.times.append(ResponseTime)
        if result.status_code !=200 :
            myrequest.error.append("0")
if __name__=='__main__':
    myrequest=url_request()
    threads = []
    starttime = datetime.datetime.now()
    print("请求开始时间:request start time %s" %starttime)
    nub = 10
    ThinkTime = 0.5
    for i in range(1, nub+1):
        t = threading.Thread(target=myrequest.weather_DC())
        threads.append(t)
    for t in threads:
        time.sleep(ThinkTime)
        print("线程数:thread %s" %t)
        t.setDaemon(True)
        t.start()
        t.join()
    endtime = datetime.datetime.now()
    print("请求结束时间:request end time %s" %endtime)
    time.sleep(3)
    AverageTime = "{:.3f}".format(float(sum(myrequest.times))/float(len(myrequest.times)))
    print("平均响应时间:Average Response Time %s ms" %AverageTime)
    usetime = str(endtime - starttime)
    hour = usetime.split(':').pop(0)
    minute = usetime.split(':').pop(1)
    second = usetime.split(':').pop(2)
    totaltime = float(hour)*60*60 + float(minute)*60 + float(second)
    print("并发数:Concurrent processing %s" %nub)
    print("#总共消耗的时间:use total time %s s" %(totaltime-float(nub*ThinkTime)))
    print("错误请求数:fail request %s s" %myrequest.error.count("0"))

实例扩展:

利用request发送请求,利用多线程模拟并发

#!/user/bin/env python
#coding=utf-8
import requests
import datetime
import time
import threading

class url_request():
    times = []
    error = []
    def req(self,AppID,url):
        myreq=url_request()
        headers = {'User-Agent' : 'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'}
        payload = {'AppID':AppID,'CurrentURL':url}
        r = requests.post("http://xx.xxx.com/WeiXinJSAccessToken/json/WeChatJSTicket",headers=headers,data=payload)
        ResponseTime=float(r.elapsed.microseconds)/1000 #获取响应时间,单位ms
        myreq.times.append(ResponseTime) #将响应时间写入数组
        if r.status_code !=200 :
            myreq.error.append("0")
if __name__=='__main__':
    myreq=url_request()
    threads = []
    starttime = datetime.datetime.now()
    print "request start time %s" %starttime 
    nub = 50#设置并发线程数
    ThinkTime = 0.5#设置思考时间
    for i in range(1, nub+1): 
        t = threading.Thread(target=myreq.req, args=('12','http://m.ctrip.com/webapp/cpage/#mypoints'))
        threads.append(t)
    for t in threads:
        time.sleep(ThinkTime) 
        #print "thread %s" %t #打印线程
        t.setDaemon(True)
        t.start()
    t.join()
    endtime = datetime.datetime.now()
    print "request end time %s" %endtime  
    time.sleep(3)
    AverageTime = "{:.3f}".format(float(sum(myreq.times))/float(len(myreq.times))) #计算数组的平均值,保留3位小数
    print "Average Response Time %s ms" %AverageTime #打印平均响应时间
    usetime = str(endtime - starttime)
    hour = usetime.split(':').pop(0)
    minute = usetime.split(':').pop(1)
    second = usetime.split(':').pop(2)
    totaltime = float(hour)*60*60 + float(minute)*60 + float(second) #计算总的思考时间+请求时间
    print "Concurrent processing %s" %nub #打印并发数
    print "use total time %s s" %(totaltime-float(nub*ThinkTime)) #打印总共消耗的时间
    print "fail request %s" %myreq.error.count("0") #打印错误请求数
request start time 2015-02-10 18:24:14.316000
request end time 2015-02-10 18:24:39.769000
Average Response Time 46.700 ms
Concurrent processing 50
use total time 25.453 s
fail request 1

到此这篇关于Python3接口性能测试实例代码的文章就介绍到这了,更多相关Python3实现简单的接口性能测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
分享Python文本生成二维码实例
Jan 06 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
在windows下Python打印彩色字体的方法
May 15 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
Python torch.flatten()函数案例详解
Aug 30 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
js有序数组的连接问题
2013/10/01 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
JavaScript判断变量是对象还是数组的方法
2014/08/28 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
vue实现扫码功能
2020/01/17 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
Python实现求两个数组交集的方法示例
2019/02/23 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
对Django中内置的User模型实例详解
2019/08/16 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
办公室主任先进事迹
2014/01/18 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
导游词范文
2015/02/13 职场文书
工程项目合作意向书
2015/05/08 职场文书
初中生物教学反思
2016/02/20 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
实习报告怎么写
2019/06/20 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python