Bearer Token接口自动化测试框架【一】

本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/113784217

前面分享了一篇 bearer token的接口 使用工具去请求,这次来说下 我是咋设计接口自动化测试框架的。

这是接口自动化测试框架的 category, 有兴趣 可以看看。

个人博客:https://blog.csdn.net/zyooooxie

需求

  1. 第一篇说到:登录后,在获取token时,2个模块 是要分别跑2个内部接口的;
  2. 我还是想用我写好的一套框架 : 详见【一】到【九】
  3. 能够跑通即可【我只是为了练习】

requests.session() 用法

在这里插入图片描述

项目整体设计

在这里插入图片描述

代码

login_with_token.py

Bearer Token接口 重点在header;


class LoginWithToken(object):

    def __init__(self, token=None):
        # token 传cashLoan\largeLoan\None
        self.token = token

    @staticmethod
    def login_app():
        s = requests.session()

        login_url = "https://zyooooxie/login.do"
        login_dict = {
    
    
            "deviceType": "zyooooxie",
            "password": "zyooooxie",
            "phoneNumber": "zyooooxie",
            "deviceBrand": "zyooooxie"
        }
        res = s.post(login_url, data=login_dict, verify=False)       # TODO 开了Fiddler抓包

        if res.json()['data']['uid'] == 50010833:
            print('登录成功')

        return s

    def get_token(self, session: Session):
        if self.token is None:
            return

        if self.token == 'cashLoan':
            print('执行cashLoan 获取token')

            url_token = "https://zyooooxie/loan/cash/redirection/status.do"
            header_token = {
    
    
                "vc": "zyooooxie",
                "dt": "zyooooxie"
            }
            method_token = 'post'
        elif self.token == 'largeLoan':
            print('执行largeLoan 获取token')

            url_token = "https://zyooooxie/large/loan/redirection/status.do"
            header_token = {
    
    
                "dt": "zyooooxie",
                "appVersion": "zyooooxie"
            }
            method_token = 'get'
        else:
            raise Exception('token字段值 传参有误')

        res_token = session.request(method_token, url_token, headers=header_token, verify=False)
        bearer_token = res_token.json()['data']['accessToken']
        session.headers.update({
    
    'Authorization': 'Bearer ' + bearer_token})

        return session


test_cash_loan包

File:conftest.py


@pytest.fixture(scope='class')
def session_with_token():
    lwt = LoginWithToken('cashLoan')
    yield lwt.get_token(lwt.login_app())
    print('退出 cashLoan')
    

在这里插入图片描述

File:test_cash.py


class TestCasesCash(object):

    gl_excel_data = CommonFunctions.read_excel(r'D:\git\abc\zyooooxie\test_cash_loan\cash.xlsx', sheet_index=0)

    @pytest.mark.parametrize('data', gl_excel_data)
    def test_cash(self, data, session_with_token):
        Log.debug(data)
        feature, story, title, url, method, request_header, request_data, expected_data, remark, description, \
        setup, teardown, need_setup_teardown, sql_select, sql_delete, re_extractor, account, function_extractor = data

        if method == 'data':
            res = SessionSendReq(session_with_token).send_post_data(test_url=url, test_header=json.loads(request_header),
                                                                    new_data=json.loads(request_data))
            assert res.text.find(expected_data) != -1


test_large_loan包

File:conftest.py


@pytest.fixture(scope='module')
def session_with_token():

    lwt = LoginWithToken('largeLoan')
    yield lwt.get_token(lwt.login_app())
    print('largeLoan 退出')


在这里插入图片描述

File:test_large.py



class TestCasesLarge(object):

    gl_excel_data = CommonFunctions.read_excel(r'D:\git\abc\zyooooxie\test_large_loan\large.xlsx', sheet_index=0)

    @pytest.mark.parametrize('data', gl_excel_data)
    def test_cash(self, data, session_with_token):
        Log.debug(data)
        feature, story, title, url, method, request_header, request_data, expected_data, remark, description, \
        setup, teardown, need_setup_teardown, sql_select, sql_delete, re_extractor, account, function_extractor = data

        if method == 'get':
            res = SessionSendReq(session_with_token).send_get(test_url=url, test_header=json.loads(request_header),
                                                              params_data=json.loads(request_data))
            assert res.text.find(expected_data) != -1


执行结果

在这里插入图片描述

本期分享到此;
下期 看能不能分享下 大佬的代码+思路;

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

猜你喜欢

转载自blog.csdn.net/zyooooxie/article/details/113784217