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实现的重启关机程序实例
Aug 21 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python之文字转图片方法
May 10 Python
python实现顺序表的简单代码
Sep 28 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python实现微信自动回复机器人功能
Jul 11 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
pytorch数据预处理错误的解决
Feb 20 Python
Python selenium自动化测试模型图解
Apr 15 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Python logging模块写入中文出现乱码
May 21 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
用Django实现一个可运行的区块链应用
2018/03/08 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
对Django外键关系的描述
2019/07/26 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
三好学生自我鉴定
2013/12/17 职场文书
生日邀请函范文
2014/01/13 职场文书
大学生学习计划书
2014/09/15 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
大二学生自我检讨书
2014/10/23 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书