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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
Python解析并读取PDF文件内容的方法
May 08 Python
java中两个byte数组实现合并的示例
May 09 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python监控文件并且发送告警邮件
Jun 21 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
python实现连连看游戏
Feb 14 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
JS 遮照层实现代码
2010/03/31 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python远程连接MySQL数据库
2019/04/19 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
python从PDF中提取数据的示例
2020/10/30 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
红领巾广播站广播稿
2014/02/01 职场文书
少先队入队活动方案
2014/02/08 职场文书
商务英语专业求职信
2014/06/26 职场文书
安全标兵事迹材料
2014/08/17 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers