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的urllib库提交WEB表单
Feb 24 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
python使用udp实现聊天器功能
Dec 10 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
Python3数字求和的实例
Feb 19 Python
Python实现使用request模块下载图片demo示例
May 24 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
JS hashMap实例详解
2016/05/26 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
JavaScript进制转换实现方法解析
2020/01/18 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
windows下python安装pip图文教程
2018/05/25 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
Python和Bash结合在一起的方法
2020/11/13 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
村官学习十八大感想
2014/01/15 职场文书
主持人开幕词
2015/01/29 职场文书
走进毛泽东观后感
2015/06/04 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
讲解Python实例练习逆序输出字符串
2022/05/06 Python