美文网首页自动化测试之路软件测试Python接口测试
python项目实战--封装接口请求方法(二)

python项目实战--封装接口请求方法(二)

作者: orange_ade | 来源:发表于2019-11-07 14:02 被阅读0次
    一、编写封装http请求

    用pycharm新建项目名称自己随意取,比如:study_test;在项目下新增文件夹common,添加两个文件:configHttp.py、login_info.py

    • configHttp.py
    • post请求中 data=json.dumps(data) 也可用:json = data ;因为get请求不能传json格式的参数,post请求需要传json格式的参数
    #!/usr/bin/python
    # coding=utf-8
    import json
    import requests
    
    class RequestMethod:
        """ 定义请求类型 """
    
        def __init__(self):
    
            """初始化参数"""
            self.data = {}
            self.files = {}
    
        def get(self, url, data, headers):
            """
            定义get方法请求
            :return:
            """
            try:
                return requests.get(url=url, data=data, headers=headers, timeout=60)
            except TimeoutError:
                return print('%s get request timeout!' % url)
    
        def post(self, url, data, headers):
            """
            定义post方法请求
            :return:
            """
            try:
                return requests.post(url=url, data=json.dumps(data), headers=headers, timeout=60)
            except TimeoutError:
                return print('%s post request timeout!' % url)
    
    
    • login_info.py 返回接口请求结果中某个字段值:”token“,可用于下个接口请求。
    • 如果想获取的字段不在返回结果最外层,例如{data:{user:{},session_id:{}}} ,现在要获取session_id则可以更改:result = resp['data']['info'] ;最后print(login_info("session_id"))
    #! /usr/bin/python
    # coding:utf-8
    from common.configHttp import RequestMethod
    
    def login_info(info):
        url = "**********"
        headers = {'Content-Type': 'application/json;charset=utf-8'}
        data = {"key1":"", "key2":""}
        resp = RequestMethod().post(url, data, headers).json()
        # print(resp)
        # req_result = json.loads(resp.text)
        result = resp[info]
        return result
    
    if __name__ == '__main__':
        print(login_info("token"))
    
    • 也可以像下面这样写,如果想返回所有结果则可直接去掉['token']
    #! /usr/bin/python
    # coding:utf-8
    from common.configHttp import RequestMethod
    
    def login_info():
        url = "**********"
        headers = {'Content-Type': 'application/json;charset=utf-8'}
        data = {"key1":"", "key2":""}
        resp = RequestMethod().post(url, data, headers).json()
        print(resp['token'])
    
    if __name__ == '__main__':
        login_info()
    
    二、代码解释

    1、login_info.py 文件封装登录接口,用于获取下个接口需要的token。
    2、configHttp.py 封装接口请求的请求方式post/get,将url、data、headers参数化,不同接口在请求post/get方式的接口时,可根据接口请求类型调用configHttp.py中RequestMethod类下的方法:get、post
    3、每次请求调用时,都只需要传入三个变量:url、data、headers
    4、from common.configHttp import RequestMethod 中的common为目录,configHttp.py、login_info.py都在common目录下

    三、补充

    如果还有其他类型的请求方式,例如:patch、delete ;可按如下方式编写

        def patch(self, url, data, headers):
            """
            定义patch方法请求
            :return:
            """
            try:
                return requests.patch(url=url, json=data, headers=headers, timeout=60)
            except TimeoutError:
                return print('%s patch request timeout!' % url)
    
        def delete(self, url, data, headers):
            """
            定义delete方法请求
            :return:
            """
            try:
                return requests.delete(url=url, json=data, headers=headers, timeout=60)
            except TimeoutError:
                return print('%s delete request timeout!' % url)
    

    相关文章

      网友评论

        本文标题:python项目实战--封装接口请求方法(二)

        本文链接:https://www.haomeiwen.com/subject/lftvbctx.html