接口压力测试500次,查看响应时间
import json import requests import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) restime = [] OK=[] class Restime(): def API(self,URL2,param): try: r = requests.get(URL2, params=param, timeout=10) r.raise_for_status() # 如果响应状态码不是 200,就主动抛出异常 except requests.RequestException as e: print(e) else: js = json.dumps(r.json()) return [r.json(), r.elapsed.total_seconds(),js] def circulation(self,num,URL2,param): for i in range(num): restime.append(Restime.API(URL2,param)[1]) if json.loads(Restime.API(URL2, param)[2])["message"]=='ok': OK.append(json.loads(Restime.API(URL2, param)[2])["message"]) logger.info('请求第' + str(i+1) + '次,请求'+json.loads(Restime.API(URL2, param)[2])["message"]+',状态码:'+json.loads(Restime.API(URL2, param)[2])["status"]) else: logger.info('请求第' + str(i+1) + '次,请求' + json.loads(Restime.API(URL2, param)[2])["message"] + ',状态码:' + json.loads(Restime.API(URL2, param)[2])["status"]) print('测试次数:',num) print('响应次数:', len(restime)) print('正常响应次数:', len(OK)) print('总响应最大时长:', max(restime)) print('总响应最小时长:', min(restime)) print('总响应时长:', sum(restime)) print('平均响应时长:', sum(restime) / len(restime)) if __name__ == '__main__': Restime=Restime() #URL2 = 'http://wthrcdn.etouch.cn/weather_mini' #param = {'ip': '8.8.8.8', 'city': '西安'} num=500 #压力测试次数 URL2 = 'http://www.kuaidi100.com/query' #地址 param = {'type' : 'zhongtong' , 'postid' :'73116039505988' } #参数 Restime.circulation(num,URL2,param) input('Press Enter to exit...')
测试次数: 500 响应次数: 500 正常响应次数: 500 总响应最大时长: 0.336179 总响应最小时长: 0.062753 总响应时长: 41.892936000000034 平均响应时长: 0.08378587200000007
补充知识:python利用requests统计1个接口的响应时间
requests统计接口的响应时间有2种方式
r.elapsed.total_seconds()
r.elapsed.microseconds/(1000*1000)
但是第2种方式,当调用的接口响应时间大于1s时,得到的响应时间是不准确的。下面来看示例
首先看接口响应时间小于1s时,分别使用2种方式得到 post "https://www.baidu.com/" 的响应时间
代码示例:
import requests url = "https://www.baidu.com/" r = requests.post(url) # print(r.text) #推荐使用这种方式统计一个接口的响应时间,准确性更高 print(r.elapsed.total_seconds()) #当接口的响应时间大于1s时,下面这种统计方式就会不准确 print(r.elapsed.microseconds/(1000*1000))
运行结果:
0.039872
0.039872
再测试一个接口响应时间超过1s的接口,
然后看接口响应时间大于1s时,分别使用2种方式得到 post "http://cn.python-requests.org/zh_CN/1atest/" 的响应时间
果然发现2种方式统计的结果不一样了呢
import requests url = "http://cn.python-requests.org/zh_CN/1atest/" r = requests.post(url) # print(r.text) #结果正确 print(r.elapsed.total_seconds()) #结果不正确 print(r.elapsed.microseconds/(1000*1000))
运行结果:
1.298427
0.298427
很显然,r.elapsed.microseconds/(1000*1000)在接口的响应时间大于1s时,只截取了后面的小数部分
以上这篇python+requests接口压力测试500次,查看响应时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍python+requests+unittest API接口测试实例(详解),包括了python+requests+unittest API接口测试实例(详解)的使用技巧和注意事项,需要的朋友参考一下 我在网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,将用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有
APM 厂商「云智慧」是 DaoCloud 的合作伙伴,云智慧提供了用于应用压力测试的产品「压测宝」,可供 DaoCloud 上部署的应用进行分布式压力测试。以下内容由云智慧公司提供。 压测宝介绍 云智慧压测宝: 自动化全链路云测试,模拟真实压力 压测宝可以利用全球的云资源,快速灵活地部署测试,使任何客户都可以根据需求进行互联网和移动应用的性能测试,帮助客户找出系统瓶颈和潜在问题,改善和提升网站品
概述 Web压力测试 工具 LoadRunner LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能监测,来帮助测试人员更快的查找和发现问题。LoadRunner适用于各种体系架构,能支持广泛的协议和技术,为测试提供特殊的解决方案。企业通过LoadRunner能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。 LoadRunner提供了3大
本文向大家介绍python实现websocket的客户端压力测试,包括了python实现websocket的客户端压力测试的使用技巧和注意事项,需要的朋友参考一下 使用python进行websocket的客户端压力测试,这个代码是从github上 找到。然后简单修改了下。大神运用了进程池,以及线程池的内容。所以保存下来,学习学习 然后需要说明的是:本次用的python2.7,也尝试用python3
测试环境: 系统:debian 6.0 64位 内存:64G cpu:Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (2颗物理cpu,6核心,2线程) Workerman:开启200个Benchark进程 压测脚本:benchmark 业务:发送并返回hello字符串 普通PHP(版本5.3.10)压测 短连接(每次请求完成后关闭连接,下次请求建立新的连接):
本文向大家介绍性能测试和压力测试之间的区别,包括了性能测试和压力测试之间的区别的使用技巧和注意事项,需要的朋友参考一下 性能测试 在软件上执行性能测试,以测试其在特定工作负载下的性能,灵敏度,反应时间和稳定性。 压力测试 压力测试检查特定工作负载下软件的可靠性和稳定性。它检查系统是否处于极端状况,例如重负载。 以下是性能测试和压力测试之间的一些重要区别。 序号 键 性能测试 压力测试 1 目的 性