zoukankan      html  css  js  c++  java
  • 利用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,到此结束。

  • 相关阅读:
    leecode 91. 解码方法
    leecode 166. 分数到小数
    剑指 Offer 31. 栈的压入、弹出序列
    leecode 386. 字典序排数
    LeetCode 311 稀疏矩阵的乘法
    leecode 89. 格雷编码
    leecode 79. 单词搜索
    leecode 207. 课程表
    QT -- 解决:Error: Could not decode "*.cpp" with "UTF-8"
    VS+QT -- 没有PRO文件的问题
  • 原文地址:https://www.cnblogs.com/hanmk/p/9101275.html
Copyright © 2011-2022 走看看