python--介面自動化鑑權例項

z_erduo發表於2018-07-17

第一大題:

寫一個類,有一個http_request函式,能夠完成http的get以及post請求,url和param作為這個函式的引數。

難點:考慮如果有cookie的話怎麼完成請求?因為登入與充值有關聯。

驗證:建立例項,完成登入--->充值請求。

登入:http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/login

引數:{"mobilephone":"13500000000","pwd":"123456"}

充值:http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/recharge

引數:{"mobilephone":"13500000000","amount":"100"}

#http_request_1

#第一種解法:設定全域性變數:

import requests
COOKIES=None#全域性變數
#登入成功之後才會產生cookie
class HttpRequest:
    def http_request(self,url,params,method):
        global COOKIES#更改cookie 全域性變數
        if method.upper()=='GET':
            res=requests.get(url,params,cookies=COOKIES)
        elif method.upper()=='POST':
            res=requests.post(url,params,cookies=COOKIES)
        print("產生的cookie",res.cookies)
        print("目前cookie的值",COOKIES)
        if res.cookies!={}:#cookies不為空的時候 我就替換全域性變數
            COOKIES=res.cookies#賦值運算
        print(res.json())
        #因為HTTP請求是無狀態的,所以我們要利用cookies

if __name__ == '__main__':
    t=HttpRequest()
    login='http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/login'
    login_data={"mobilephone":"13500000000","pwd":"123456"}

    re_url='http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/recharge'
    re_data={"mobilephone":"13500000000","amount":"100"}

    t.http_request(login,login_data)#登入
    print("結束登入")
    t.http_request(re_url,re_data)#充值
    print("結束充值")

 

 

#第二種解法:

import requests
from demo.save_value import SaveValue

object=SaveValue()
class HttpRequest:
    def http_request(self,url,params):
        res=requests.get(url,params,cookies=object.COOKIES)
        print("產生的cookie",res.cookies)
        if res.cookies!={}:#cookies不為空時,替換全域性變數
            
            setattr(object,'COOKIES',res.cookies)
        print(res.json())
    

if __name__ == '__main__':
    t=HttpRequest()
    login='http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/login'
    login_data={"mobilephone":"13500000000","pwd":"123456"}

    re_url='http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/recharge'
    re_data={"mobilephone":"13500000000","amount":"100"}

    t.http_request(login,login_data)#登入
    t.http_request(re_url,re_data)#充值

 

#save_value.py

class SaveValue:
    COOKIES=None

 

 

第二大題:

1:把登入和充值的請求引數放到TXT裡面,資料如下:

登入:http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/login

引數:{"mobilephone":"13500000000","pwd":"123456"}

充值:http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/recharge

引數:{"mobilephone":"13500000000","amount":"100"}

存到TXT裡面格式如下:

#data_test_1.txt

url:http://xxx.xxx.xxx.xxx:8080/futureloan/mvc/api/member/login,mobilephone:13500000000,pwd:123456,method:get

url:http://xxx.xxx.xxx:8080/futureloan/mvc/api/member/recharge,mobilephone:13500000000,amount:100,method:post

作業要求:利用get_data.py中的類GetData從txt裡面讀取資料的類,完成測試資料的讀取。

#get_data.py
class GetData:
    def get_data(self,file_path):
        file=open(file_path)
        all_lines=file.readlines()
        # print(all_lines)
        list_1=[]
        for one_line in all_lines:
            split_data=one_line.strip('\n').split(',')
            dict_1={}
            for item in split_data:
                item_split=item.split(':',1)
                dict_1[item_split[0]]=item_split[1]#把值新增到字典裡面去
            list_1.append(dict_1)
        return list_1

新建一個py檔案,引入第一大題,完成HTTP請求類,以及第二大題的讀取資料類,建立例項,完成登入和充值請求。

#run.py
from demo.http_request_1 import HttpRequest
from demo.get_data import GetData

t=HttpRequest()
test_data=GetData().get_data('test_data.txt')
print(test_data)
for item in test_data:
    print("遍歷取的資料",item)
    method=item['method']
    item.pop('method')

    url=item['url']
    item.pop('url')

    t.http_request(url,item,method)

 

 

相關文章