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 相关文章推荐
python判断、获取一张图片主色调的2个实例
Apr 10 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
python妙用之编码的转换详解
Apr 21 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
numpy.linspace函数具体使用详解
May 27 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Django中的AutoField字段使用
May 18 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
Python Django 后台管理之后台模型属性详解
Apr 25 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
利用PHP如何写APP接口详解
2016/08/23 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
js变量、作用域及内存详解
2014/09/23 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
写给女朋友的检讨书
2014/01/28 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
临床护理求职信
2014/04/26 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
英文道歉信
2015/01/20 职场文书
安徽导游词
2015/02/12 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书