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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
用实例分析Python中method的参数传递过程
Apr 02 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
python正则表达式re之compile函数解析
Oct 25 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
python采集微信公众号文章
Dec 20 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
Python xlwings插入Excel图片的实现方法
Feb 26 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连接SQLServer2005方法及代码
2013/12/26 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Python Process多进程实现过程
2019/10/22 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
学生党员思想汇报范文
2014/01/09 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
安全生产大检查方案
2014/05/07 职场文书
2014和解协议书范文
2014/09/15 职场文书
先进班组事迹材料
2014/12/25 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python