zoukankan      html  css  js  c++  java
  • 20191011-构建我们公司自己的自动化接口测试框架-Action的request方法封装

    Action模块

    封装接口request方法,根据传入的参数调用不同的请求方法,因为项目特色,我们公司的接口都是get和post方法,所以仅仅封装了get和post方法:

    import requests
    import json
    from Util.Log import *
    import traceback
    def api_request(method,baseurl,header,auth,body,test_case_name):
        """Action关键字,通过method确认使用get还是post方法,baseurl为请求路径,header为空请求头,auth为授权登录信息,body为当请求方法为post的时候请求data信息"""
        # global response
        default_header = {'Content-Type':'application/json'}
        # 如果没有提供请求头信息,则使用默认请求头信息
        if not header:
            header = default_header
        # 如果有头信息,因为excel里面读出来的都是字符串,需要将头信息转换为字典
        #get请求
        if method.lower() =="get":
            try:
                if isinstance(body, dict):
                    info("-"*80)
                    info("请求接口操作是:%s"%test_case_name)
                    info("请求的接口地址是:%s" % baseurl)
                    info("请求的数据是:%s" % body)
                    r = requests.get(baseurl, params=body,headers=header,auth=auth)
                    info("请求返回状态码:%s"%r.status_code)
                else:
                    # r = requests.get(baseurl + str(body),headers=header,auth=auth)
                    r = requests.get(baseurl,headers=header,auth=auth)
                    info("-"*80)
                    info("请求接口操作是:%s"%test_case_name)
                    info("请求的接口地址是:%s" % baseurl)
                    info("请求的数据是:%s" % body)
                    info("请求返回状态码:%s"%r.status_code)
                return r
            except Exception as e:
                # print("进入Exception")
                info("get 方法请求发生异常:请求的 url 是 %s,请求的内容是%s
    发生的异常信息如下:%s" % (baseurl, body, traceback.format_exc()))
                r = None
            return r
        #post请求
        elif method.lower()=="post":
            try:
                if isinstance(body, dict):
                    info("-"*80)
                    info("请求接口操作是:%s"%test_case_name)
                    info("请求的接口地址是:%s" % baseurl)
                    info("请求的数据是:%s" % json.dumps(body))
                    r = requests.post(baseurl,headers = header,data=json.dumps(body),auth=auth)
                    info("请求返回状态码:%s"% r.status_code)
                else:
                    raise ValueError
            except ValueError as e:
                info("post 方法请求发生异常:请求的 url 是 %s,请求的内容是%s
    发生的异常信息如下:%s" % (baseurl, body, "请求参数不是字典类型"))
                r = None
            except Exception as e:
                info("post 方法请求发生异常:请求的 url 是 %s,请求的内容是%s
    发生的异常信息如下:%s" % (baseurl, body, traceback.format_exc()))
                r = None
            return r

    详解:

    因为项目特点,post方法的'Content-Type'是'application/json',所以我在封装的请求方法里面封装了默认header.同时加入了写log的代码便于以后的bug追溯。

    Request方法接收6个参数,分别是

    1. Method:请求方法名字,
    2. Baseurl:请求url
    3. header:请求头
    4. auth:验证信息
    5. body:请求body
    6. test_case_name:请求接口名称,主要是用与写日志记录接口名称

    根据传入的请求method选择进行get或者post请求,如果是get方法则提供请求url,请求header,请求授权;如果是post方法则提供请求url,请求头,请求体,请求授权;

    在请求之前进行数据的处理,包括如果没有提供请求头的话使用默认请求头,转换请求体为json格式等处理。

    在进行请求的操作的时候进行日志记录,记录格式为:

    2019-10-11 11:20:57 Log.py[line:30] INFO --------------------------------------------------------------------------------
    2019-10-11 11:20:57 Log.py[line:30] INFO 请求接口操作是:*******
    2019-10-11 11:20:57 Log.py[line:30] INFO 请求的接口地址是:http://*********************************
    2019-10-11 11:20:57 Log.py[line:30] INFO 请求的数据是:*********

  • 相关阅读:
    穷举
    菱形
    6.824 Lab 3: Fault-tolerant Key/Value Service 3A
    6.824 Lab 2: Raft 2C
    6.824 Lab 2: Raft 2B
    一文学会Rust?
    字符串相似度匹配
    解决gson解析long自动转为科学计数的问题
    commonJs requirejs amd 之间的关系
    关于package.json的理解
  • 原文地址:https://www.cnblogs.com/hyj691001/p/11654034.html
Copyright © 2011-2022 走看看