tools.py 2.63 KB
Newer Older
1 2 3 4 5
#coding:utf-8

import json
import logging
import requests
6
from config import *
7 8


jiaqiying committed
9
def request_main(url, headers, method, data, has_token=False):
10 11
    """封装requests的通用请求方法"""
    res = None
jiaqiying committed
12
    url = url.strip()
13 14 15 16 17 18 19 20 21 22 23 24
    def request_by_method(method, headers):
        inner_res = None
        try:
            header_content_type = headers["Content-Type"]
        except KeyError:
            header_content_type = headers["mimeType"]

        try:
            if method.upper() == "GET":
                inner_res = requests.get(url=url, headers=headers, params=data)
            elif method.upper() == "POST":
                if header_content_type == "application/json":
dengmaosheng committed
25
                    inner_res = requests.post(url=url, headers=headers, json=data)
26 27 28 29
                elif header_content_type in ["application/x-www-form-urlencoded"]:
                    inner_res = requests.post(url=url, headers=headers, data=data)
            return inner_res
        except Exception as e:
jiaqiying committed
30
            # logging.log(str(e))
31 32
            raise Exception

33
    # if headers == None or headers == {} or headers == "":
34
        # 如果传的headers为空,使用各自产品的通用headers
jiaqiying committed
35
    headers = build_headers(headers, has_token)
36
    # print("打印headers",headers)
37
    try:
38 39
        res = request_by_method(method, headers)
    except requests.exceptions.ConnectionError as e:
40
        logging.log(str(e))
41 42
    except requests.exceptions.RequestException as e:
        logging.log(str(e))
43 44
    if res != None:
        return res.json()
45 46 47
    return res


jiaqiying committed
48
def build_headers(headers, has_token):
49
    name = BaseConfig.current_name
jiaqiying committed
50 51
    if has_token:
        return headers
52
    if name == BMCConfig.name:
53 54 55 56
        if headers == None or headers == "":
            headers = BMCConfig.headers
        headers['Pvt-Token'] = BMCConfig.bmc_pvt_token
        headers['Token'] = BMCConfig.bmc_token
57
    elif name == BmyConfig.name:
58 59 60
        if headers == None or headers == "":
            headers = BmyConfig.headers
        headers['Authorization'] = BmyConfig.bmy_token
jiaqiying committed
61
    elif name == SSOConfig.name:
62 63
        if headers == None or headers == "":
            headers = SSOConfig.headers
jiaqiying committed
64
        headers['token'] = SSOConfig.sso_token
65 66 67
    return headers


68
def get_case_dir(product_name):
jiaqiying committed
69
    """根据传入的产品名来运行对应产品的测试用例目录"""
jiaqiying committed
70
    test_case_dir = BaseConfig.test_case_dir
71 72
    if product_name == BMCConfig.name:
        test_case_dir = BMCConfig.test_case_dir
jiaqiying committed
73 74
    if product_name == BmyConfig.name:
        test_case_dir = BmyConfig.test_case_dir
jiaqiying committed
75 76
    if product_name == SSOConfig.name:
        test_case_dir = SSOConfig.test_case_dir
77
    return test_case_dir