tools.py 2.61 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
12 13 14 15 16 17 18 19 20 21 22 23
    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
24
                    inner_res = requests.post(url=url, headers=headers, json=data)
25 26 27 28
                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
29
            # logging.log(str(e))
30 31
            raise Exception

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


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


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