使用python請求接口方式(可進(jìn)行并發(fā)測試)
使用python請求接口
python可以支持多個線程,所以可以利用python對寫好的接口進(jìn)行并發(fā)測試。
請求接口代碼如下:
#coding=utf-8
import requests
import json
import threading
import time
import uuid
class postrequests():
def __init__(self):
self.url = 'https://***.*****.com/user/user/login' #請求鏈接
self.data = {'phone': '176*****286','code':'12***6'} #傳遞參數(shù)
self.headers = {'content-type': 'application/json'} #請求頭
self.data = json.dumps(self.data)
def post(self):
try:
r = requests.post(self.url, self.data, headers=self.headers)
print(r.text)
except Exception as e:
print(e)
def kquan_bf():
login = postrequests()
return login.post()
try:
i = 0
# 開啟線程數(shù)目
tasks_number = 1
print('測試啟動')
time1 = time.perf_counter()
while i < tasks_number:
t = threading.Thread(target=kquan_bf)
t.start()
i +=1
time2 = time.perf_counter()
times = time2 - time1
print(times/tasks_number) #每次請求用時
except Exception as e:
print(e) #請求結(jié)果結(jié)果顯示:
測試啟動
0.0005290000000000017
>>> {"code":0,"message":"操作成功","data":{"詳細(xì)數(shù)據(jù)"}
若接口中做了并發(fā)處理,同時開啟多數(shù)線程時,就會觸發(fā)代碼中的并發(fā)處理邏輯(如提示:服務(wù)器繁忙,請稍后再試?。?/p>
python如何調(diào)用接口
在Python中調(diào)用接口可以使用多種方式,以下是其中幾種常用的方法:
使用標(biāo)準(zhǔn)庫中的urllib模塊或第三方庫requests發(fā)送HTTP請求。
首先需要導(dǎo)入對應(yīng)的庫,然后使用相應(yīng)的函數(shù)發(fā)送請求,并獲得返回的結(jié)果。
例如,在使用requests庫調(diào)用接口的示例代碼如下:
import requests
# 發(fā)送GET請求
response = requests.get('http://api.example.com/users')
data = response.json() # 將返回的JSON數(shù)據(jù)轉(zhuǎn)換為Python對象
# 發(fā)送POST請求
payload = {'username': 'test', 'password': '123456'}
response = requests.post('http://api.example.com/login', data=payload)
data = response.json() # 將返回的JSON數(shù)據(jù)轉(zhuǎn)換為Python對象使用第三方庫httplib2。
該庫提供了更高級的接口調(diào)用功能,支持HTTP和HTTPS,并且支持緩存、重定向、認(rèn)證等功能。
import httplib2
http = httplib2.Http()
response, content = http.request('http://api.example.com/users', 'GET')
data = json.loads(content) # 將返回的JSON數(shù)據(jù)轉(zhuǎn)換為Python對象
payload = {'username': 'test', 'password': '123456'}
response, content = http.request('http://api.example.com/login', 'POST', body=urlencode(payload))
data = json.loads(content) # 將返回的JSON數(shù)據(jù)轉(zhuǎn)換為Python對象使用標(biāo)準(zhǔn)庫中的subprocess模塊調(diào)用命令行工具。
如果需要調(diào)用的接口是通過命令行工具提供的,可以使用subprocess模塊調(diào)用該命令行工具并獲取其輸出。
import subprocess output = subprocess.check_output(['curl', 'http://api.example.com/users']) data = json.loads(output) # 將返回的JSON數(shù)據(jù)轉(zhuǎn)換為Python對象
以上是幾種常用的調(diào)用接口的方法,你可以根據(jù)具體情況選擇適合你的方法進(jìn)行接口調(diào)用。
總結(jié)
這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用socket模塊開發(fā)簡單的端口掃描工具的實現(xiàn)
這篇文章主要介紹了Python利用socket模塊開發(fā)簡單的端口掃描工具的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python 生成一個從0到n個數(shù)字的列表4種方法小結(jié)
今天小編就為大家分享一篇Python 生成一個從0到n個數(shù)字的列表4種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度
ctypes是Python的一個外部庫,提供和C語言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用C DLL中的函數(shù)。今天我們就來詳細(xì)探討下ctypes庫的使用技巧2016-09-09
Python functools.lru_cache自動緩存應(yīng)用小結(jié)
lru_cache會為所有同名的函數(shù)全局維護(hù)一個獨(dú)立的緩存結(jié)構(gòu),不同函數(shù)之間的緩存空間不沖突,適用于所有相同輸入對應(yīng)相同輸出的確定性函數(shù),下面給大家介紹Python functools.lru_cache自動緩存應(yīng)用,感興趣的朋友跟隨小編一起看看吧2026-02-02

