做正品的汽配網(wǎng)站360收錄提交入口網(wǎng)址
🍦?會話保持-token
有的網(wǎng)站登錄需要token鑒權(quán),是啥意思呢,現(xiàn)在有兩個接口,一個接口是登錄,一個接口是提交訂單,那你怎么保證,提交登錄這個用戶是登錄狀態(tài)呢。登錄成功的接接口會在response里面返回token,我們拿到token之后再把它放到訂單接口的請求頭里面,這樣一個流程就實現(xiàn)了登錄的鑒權(quán)。
🍦?會話保持權(quán)-cookie
同token,只不過cookie不是再response里面,直接是返回結(jié)果的.cookie.然后訂單接口的時候傳參,參數(shù)直接加上cookie這個值。
🍦 會話保持?requests Session模塊
會話對象讓你能夠跨請求保持某些參數(shù)。它也會在同一個 Session 實例發(fā)出的所有請求之間保持 cookie。怎么用呢
session = requests.session()url = "https://easy-mockhome,avzhg,com:10443/mock/61922bfd6e616600281c7c3e/test/1oginjson ={'user": "user","password': "123"}
result = session.post(url, json=json, verify=False)tek=result.json().get('data').get('cookie")
session.headers.update({'toker': tok})
print("接口一打印:",session.headers)
Url = "https://easy-mock,home,gyzhg.com:10443/mock/61922bfd6e616680281c7c3e/test/logout
json={}
result = session.post(url,json=json, verify=False)print("換口二打印:",session.headers)
可以看到headers都是一樣的,這樣就實現(xiàn)了會話保持
🍦?使用裝飾器實現(xiàn)會話保持
接下來使用裝飾器實現(xiàn),首先登錄是一個裝飾器,其他函數(shù)是被裝飾器的。我們要做什么呢,每次登錄的時候去檢查登錄狀態(tài),如果登錄了就不操作,如果沒有登錄就需要去做登錄操作。這是一個登錄的裝飾器
def login(fun):
def login_true(*args, **kwargs):
if session.headers.get('token') is None:
url = 'https://easy-mock.home.gyzhg.com:10443/mock/61922bfd6e616600201c7c3e/test/login'json ={'user': args[0],'password': args[1]}
result =session.post(url,json=json, verify=False)tok = result.json().get('data').get('cookie')session.headers.update({'token': tok})
print('login',json,result.json())
fun(*args,**kwargs)
else:
print('用戶已經(jīng)登錄")
fun(*args, **kwargs)
return login_true
登錄之后我把token塞進(jìn)到了headers里面。接下來是一個購買的接口,我想切換用戶,所以我傳了兩個參數(shù)。
@login
def buy(user, password):
url = 'https://easy-mock.home.gyzhg.com:10443/mock/61922bfd6e616600201c7c3e/test/buy
json = {}
result =session.post(url,json=json,verify=False)
assert result.json().get('data').get('message')== 'success'
print('buy',result.json())
return result.json()
看一下效果
流程是現(xiàn)在有兩個函數(shù),一個是購買操作,一個是退出操。調(diào)用順序是這樣的
if__name__ =='__main__'print(buy('user','123'))print(logout())print(buy('user','123'))
購買傳入兩個參數(shù),再退出,再去購買 看一下結(jié)果。
E:\python3.8\python.exe E:/test locust/11.25.py('login', i'user': 'user', "password': "123', i'data': i'status': 200, 'cookie’: "ERTYUCLLL@#$$^==’}}, ('buy', i'data': i'statu('用戶已經(jīng)登錄’,('logout",{'data':{'status':200,'message':'注銷成功"}}))('login', f'user': 'user’, "pasword': "123'+, i'data': i'status’: 2, 'cookie’: 'ERTYUCLLL@$;^==’, ('buy', {'data': i'status
可以看到首先是登錄,登錄之后去下單,然后退出,再去登錄,再去下單?,F(xiàn)在就實現(xiàn)了會話保持的裝飾器。