美文网首页自动化测试之路软件测试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