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多线程编程(五):死锁的形成
Apr 05 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
如何安装并使用conda指令管理python环境
Jul 10 Python
Python中求对数方法总结
Mar 10 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
python中%格式表达式实例用法
Jun 18 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开发大型项目的一点经验
2006/10/09 PHP
用PHP连接Oracle数据库
2006/10/09 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
微信小程序仿通讯录功能
2020/04/09 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python 对key为时间的dict排序方法
2018/10/17 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
运动会跳远加油稿
2014/02/20 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
创业计划书之酒厂
2019/10/14 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫