1. 程式人生 > >利用session請求和cookie請求,token比較特殊不同於前面二者後面補上在這邊文章末尾

利用session請求和cookie請求,token比較特殊不同於前面二者後面補上在這邊文章末尾

先說session吧:眾所周知http請求是無狀態的,需要靠session來維持會話,而session與cookie又緊密聯絡通過儲存在cookie裡面的sessionid;接下來講如何利用這一機制傳送請求

"""pt:1session保持傳送登陸後的介面請求"""
# coding=utf-8
import json
import requests
import unittest
class Test(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        data = {"userAccount": "admin", "loginPwd": "123456"}
        global session
        s = requests.session()
        s.post(url="http://192.168.229.128:8080/cms/manage/loginJump.do", data=data)
        session =s
    @classmethod
    def tearDownClass(cls):
        pass

    def test_session(self):
        datas = {'userName': 'zhangsan', 'userEmail': '
[email protected]
', 'userMobile': '18871027706', 'userSex': '1','userAccount': 'dev', 'confirmPwd': '123456', 'loginPwd': '123456', 'id': ''} conn = session.post(url="http://192.168.229.128:8080/cms/manage/saveSysUser.do", data=datas) print conn.content if __name__ == "__main__": unittest.main() 結果如下: C:\Python27\python.exe "D:\Pycharm\PyCharm 5.0.4\helpers\pycharm\utrunner.py" C:\Users\Administrator\PycharmProjects\py3project\interface\Paramters\toy.py true Testing started at 20:38 ... {"code":"400","msg":"儲存使用者資訊失敗,登入帳號已存在!","model":{}} 到這裡有人會說學過類我不想用全域性,不喜歡或者怕全域性亂用影響指令碼 沒錯寫過類就用類啊那就用類啊來啊互相傷害啊 """pt2:用類傳session"""": # coding=utf-8 import json import requests import unittest class Test(unittest.TestCase): @classmethod def setUpClass(cls): data = {"userAccount": "admin", "loginPwd": "123456"} s = requests.session() s.post(url="http://192.168.229.128:8080/cms/manage/loginJump.do", data=data) cls.session = s @classmethod def tearDownClass(cls): pass def test_session(self): datas = {'userName': 'zhangsan', 'userEmail': '
[email protected]
', 'userMobile': '18871027706', 'userSex': '1','userAccount': 'dev', 'confirmPwd': '123456', 'loginPwd': '123456', 'id': ''} """在哪裡,在哪裡見過你""" conn = self.session.post(url="http://192.168.229.128:8080/cms/manage/saveSysUser.do", data=datas) print conn.content if __name__ == "__main__": unittest.main() """pt3:用cookie請求介面"""": import requests import json import unittest class Interface(unittest.TestCase): @classmethod def setUpClass(cls): req = requests.post(url="http://192.168.229.128:8080/cms/manage/loginJump.do", data={"userAccount": "admin", "loginPwd": "123456"}) global cookie cookie = req.cookies.get_dict() @classmethod def tearDownClass(cls): pass def test_login(self): u"登入平臺介面" req = requests.post(url="http://192.168.229.128:8080/cms/manage/loginJump.do", data={"userAccount": "admin", "loginPwd": "123456"}) dicts = json.loads(req.content) try: self.assertEqual(dicts['msg'], u"登入成功!", "status:200") except AssertionError as e: print(e) else: results = req.json() print(json.dumps(results, sort_keys=True, indent=2, separators=(',', ': '), encoding="UTF-8", ensure_ascii=False)) def test_cookie_request(self): u"儲存使用者介面" datas = {'userName': 'zhangsan', 'userEmail': '
[email protected]
', 'userMobile': '18871027706', 'userSex': '1','userAccount': 'dev', 'confirmPwd': '123456', 'loginPwd': '123456', 'id': ''} conn = requests.post(url="http://192.168.229.128:8080/cms/manage/saveSysUser.do", data=datas, cookies=cookie) result = conn.json() print(json.dumps(result, encoding="UTF-8", ensure_ascii=False, sort_keys=True, indent=2, separators=(',', ': '))) # # if __name__ == "__main__": # unittest.main() """"pt4:補充點小故事:"""" 解決下大家的介面返回亂碼問題: 通常我們寫介面 data = {"userAccount": "admin", "loginPwd": "123456"} response =requests.post(url='xxx', data =json.dumps(data),header ={"xx": "xxx"}) 或者response =requests.post(url='xxx', json=data ,header ={"xx": "xxx"}) 都是處理json型別請求格式亂碼很好的解決辦法 還可以這樣解決見我另一篇文章: https://blog.csdn.net/chen498858336/article/details/83795742