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 29 Python
Python 多进程和数据传递的理解
Oct 09 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Python Lambda函数使用总结详解
Dec 11 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python基础之pandas数据合并
Apr 27 Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 23 Python
使用Djongo模块在Django中使用MongoDB数据库
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
You might like
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python基础教程之缩进介绍
2014/08/29 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
python和php学习哪个更有发展
2020/06/17 Python
Python分类测试代码实例汇总
2020/07/23 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
介绍一下write命令
2014/08/10 面试题
两道JAVA笔试题
2016/09/14 面试题
医学生自我鉴定范文
2013/11/08 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
安全宣传标语
2014/06/10 职场文书
欢度春节标语
2014/07/01 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL
JavaScript实现简单的音乐播放器
2022/08/14 Javascript