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的Django框架中从url中捕捉文本的方法
Jul 20 Python
python从入门到精通(DAY 1)
Dec 20 Python
python flask实现分页效果
Jun 27 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
virtualenv隔离Python环境的问题解析
Jun 21 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中的数组操作函数整理
2008/08/18 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
php实现图片添加水印功能
2014/02/13 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
webpack构建react多页面应用详解
2017/09/15 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
Puppeteer使用示例详解
2019/06/20 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python 19个值得学习的编程技巧
2020/08/15 Python
人事科岗位职责范本
2014/03/02 职场文书
房屋租房协议书范本
2014/12/04 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS