利用cookies進行登錄並封裝請求方法


之前寫了一篇使用session跨請求保持會話的帖子,這次在它的基礎上對請求方法簡單封裝一下,可以達到復用的效果

1.先定義登錄方法

在登錄方法中利用session跨請求保持會話,並返回session,login_ApprExclusive.py代碼如下:

# coding:utf-8


import requests


class Login:
    """定義登錄方法"""

    @staticmethod
    def test_login():
        s = requests.session()
        jar = requests.cookies.RequestsCookieJar()  # 創建一個Cookie Jar對象
        jar.set('49BAC005-7D5B-4231-8CEA-16939BEACD67', 'cktest001')  # 向Cookie Jar對象中添加cookie值,這是登錄的cookies
        jar.set('JSESSIONID', 'ED2D58E3B438CC7597CB52CD31489914')
        jar.set('JSESSIONIDSSO', 'D16E59009557B82F5D5885DC4DAA0179')
        s.cookies.update(jar)  # 把cookies追加到Session中
        return s  # 返回攜帶cookies的session


2.定義請求方法

把get和post請求方法進行封裝,注意這里不是用requests來發送請求了,而是用上一步登錄方法中返回的session來發送,這樣就達到了跳過驗證碼登錄的目的(使用登錄后的session會話發送請求)
Run_Method.py的代碼如下:

# coding:utf-8


import json
from case.login.login_ApprExclusive import Login


class RunMain:

    def __init__(self):
        self.s = Login()   # 獲取登錄方法中的session

    def send_post(self, url, header, data):
        r = self.s.test_login().post(url=url, headers=header, data=data, verify=False)  # 使用session發送請求
        result = r.json()
        return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)
        # return result

    def send_get(self, url, header, data):
        r = self.s.test_login().get(url=url, headers=header, params=data, verify=False)
        result = r.json()
        # print(type(result))
        return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)
        # return result

    def run_main(self, url, method, header=None, data=None):
        r = None
        if method == 'GET':
            r = self.send_get(url, header, data)
        else:
            r = self.send_post(url, header, data)
        return r

3.測試一個接口

測試代碼如下:

# coding:utf-8

import unittest
from common_util.run_method import RunMain  # 從之前封裝的文件中,引入RunMain類


class ModuleList(unittest.TestCase):
    def setUp(self):
        self.run = RunMain()
        self.url = 'http://localhost:8088/consult/saveConsult.do'
        self.header = {
            "Host": "localhost.:8088",
            "Connection": "keep-alive",
            "Content-Length": "89",
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Origin": "http://localhost.:8088",
            "X-Requested-With": "XMLHttpRequest",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
            "Referer": "http://localhost.:8088/ApprExclusive/appr/enterprise/info/consult/toConsultEdit.do",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "zh-CN,zh;q=0.8"
        }

    def test01(self):
        """錄入一條咨詢"""
        data = {
            'clientCode': 'test',
            'topic': 'topic',
            'content': 'test',
            'resrcType': '0'
        }
        r = self.run.run_main(self.url, 'GET', self.header, data)

        print(r)


if __name__ == '__main__':
    unittest.main()

ok,到此結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM