Python3實現簡單的介面效能測試
阿新 • • 發佈:2021-06-19
# -*- 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"))
參考文章:https://www.cnblogs.com/clarke/p/5965778.html