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获取Linux系统的各种信息
Jul 10 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
python代码实现扫码关注公众号登录的实战
Nov 01 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
利用javascript查看html源文件
2006/11/08 Javascript
dojo 之基础篇
2007/03/24 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
原生js实现轮播图
2017/02/27 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
微信小程序实现录音功能
2019/11/22 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
python查看数据类型的方法
2019/10/12 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
优秀学生干部先进事迹材料
2014/05/26 职场文书
体育教师求职信
2014/06/30 职场文书
经典毕业生求职信
2014/07/12 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫