Exemplo n.º 1
0
def schedule(method, url, description):
    """
    定时器任务执行
    :param method: 新建 Request 对象要使用的HTTP方法
    :param url: 新建 Request 对象的URL
    :param description: 调用该方法,会实现的功能描述
    :return:
    """
    req_schedule = requests.request(method,
                                    url,
                                    headers=header_content_type_json)
    Logger().info(f'【定时任务--功能描述】:{description}')
    Logger().info(f'【定时任务--请求地址】:{url}')
    Logger().info(f'【定时任务--Headers 】:{header_content_type_json}')
    Logger().info(f'【定时任务--Response】:{req_schedule.text}')
Exemplo n.º 2
0
def headers_content_type(method, url, params, content_type, detail_headers):
    """
    填写headers
    :param method: 新建 Request 对象要使用的HTTP方法
    :param url:  新建 Request 对象的URL
    :param params:  传入参数,Request 对象的查询字符中要发送的字典或字节内容
    :param content_type:  Content-Type的类型
    :param detail_headers: 详细的headers填写
    :return:
    """
    global req  # global代表应用全局变量
    if content_type in [
            ContentTypeEnums.APPLICATION_JSON.value,
            ContentTypeEnums.CUSTOMIZE.value
    ]:
        req = requests.request(method,
                               url,
                               data=json.dumps(params),
                               headers=detail_headers)
    elif content_type == ContentTypeEnums.FORM_DATA.value:
        req = requests.request(method,
                               url,
                               data=params[0],
                               files=params[1],
                               headers=detail_headers)
    else:
        req = requests.request(method,
                               url,
                               params=params,
                               headers=detail_headers)
    Logger().info(f'【Headers 】:{detail_headers}')
 def get_redis_value(self, key_content, key_param):
     """
     通过传入key,获取redis里面存储的value值
     :param key_content:
     :param key_param: redis的key中需要传入的参数
     :return: 获取Redis的值
     """
     if type(key_param) != str:
         key_param = str(key_param)
     for item in range(5):
         value_bytes = self.redis.get(f'{key_content}:{key_param}')
         if value_bytes is not None:
             value = str(value_bytes, encoding="utf-8")
             Logger().info(f'【通过{key_param}获取Redis的值】: {value}')
             return value
         else:
             Logger().info("【正在获取Redis的值,请稍等...】")
             time.sleep(1)
     Logger().info("【无法查询获取Redis的值...】")
 def test_work_flow_03(self):
     """注册新用户上传step1"""
     ScPreLoanBorrowerAuthInterface().borrower_auth_sms_code(self.user_mobile,
                                                             SupplyChainCaptchaEnums.USER_LOGIN_CAPTCHA.value)
     ScPreLoanBorrowerAuthInterface().borrower_reg_by_sms_code()
     resp = ScPreLoanBorrowerAuthInterface().borrower_auth_sa_login_by_pwd()
     token = resp["accessToken"]
     if resp["errorCode"]['code'] == "SUCCESSFULLY":
         Logger().info("【======注册成功======】token:{}".format(token))
     ScPreLoanUploadImageInterface().upload_image(token, ResourceFilesSupplyChainUserEnums.ID_CARD_FRONT_IMAGE.value)
     ScPreLoanUploadImageInterface().upload_image(token, ResourceFilesSupplyChainUserEnums.ID_CARD_BACK_IMAGE.value)
     ScPreLoanUploadImageInterface().upload_image(token, ResourceFilesSupplyChainUserEnums.HEAD_IMAGE.value)
     ScPreLoanBorrowerInterface().borrower_save_base_info(token)
Exemplo n.º 5
0
 def query_borrower_code_by_mobile(self, mobile):
     """
     通过手机号查询borrower_code
     :param mobile: 31G 用户注册的手机号
     :return: borrower_code
     """
     try:
         for item in range(self.wait_time):
             data = self.session.query(ScBorrower).filter(
                 ScBorrower.mobile == mobile).first()
             sleep(0.5)
             if data is not None:
                 borrower_code = data.code
                 Logger().info(
                     f'【supplychain.sc_borrower】表中有该条数据,注册成功,borrowerCode为:{borrower_code}'
                 )
                 self.session.close()
                 return borrower_code
             else:
                 Logger().warning("【supplychain.sc_borrower】表中无该条数据,查询失败")
     except Exception as error:
         Logger().info(error)
Exemplo n.º 6
0
def request(method,
            url,
            description,
            params=None,
            token=None,
            platform=PlatformProjectEnums.UNIVERSAL.value,
            content_type=ContentTypeEnums.APPLICATION_JSON.value):
    """
    重新封装requests方法,自定义调用
    :param method: 新建 Request 对象要使用的HTTP方法
    :param url: 新建 Request 对象的URL
    :param description: 调用该方法,会实现的功能描述
    :param params: 传入参数,Request 对象的查询字符中要发送的字典或字节内容
    :param token: 用户token
    :param platform: 项目平台信息
    :param content_type: Content-Type的类型
    :return:
    """
    global req  # global代表应用全局变量
    Logger().info(f'【功能描述】:{description}')
    Logger().info(f'【请求地址】:{str(url)}')
    try:
        if platform == PlatformProjectEnums.UNIVERSAL.value:  # 平台选择为通用
            if content_type == ContentTypeEnums.APPLICATION_JSON.value:
                headers_content_type(method, url, params, content_type,
                                     header_content_type_json)
        elif platform == PlatformProjectEnums.SUPPLY_CHAIN.value:  # 平台选择为供应链
            g31_headers_without_cookie = get_g31_headers_without_cookie()
            g31_headers_with_cookie = get_g31_headers_with_cookie(
                token, content_type)
            if content_type == ContentTypeEnums.APPLICATION_JSON.value:
                headers_content_type(method, url, params, content_type,
                                     g31_headers_without_cookie)
            elif content_type == ContentTypeEnums.CUSTOMIZE.value:
                headers_content_type(method, url, params, content_type,
                                     g31_headers_with_cookie)
            elif content_type == ContentTypeEnums.FORM_DATA.value:
                headers_content_type(method, url, params, content_type,
                                     g31_headers_with_cookie)
            else:
                headers_content_type(method, url, params, content_type,
                                     g31_headers_with_cookie)
        else:
            Logger().info('platForm平台参数有误!')
        if content_type != ContentTypeEnums.FORM_DATA.value:
            Logger().info(f'【请求参数】:{params}')
        Logger().info("【Response】:" + req.text)
    except Exception as error:
        Logger().error(error)
    if req.status_code == 200:
        return req.json()
    else:
        Logger().info(f'【请求有误,status_code={req.status_code}】')
Exemplo n.º 7
0
def initial_connect(database):
    """初始化连接数据库"""
    try:
        db_ip = ReadEnv().read_env(DBConfigEnums.DB_IP.value)
        db_port = ReadEnv().read_env(DBConfigEnums.DB_PORT.value)
        db_password = ReadEnv().read_env(DBConfigEnums.DB_PASSWORD.value)
        db_username = ReadEnv().read_env(DBConfigEnums.DB_USERNAME.value)
        db_info = f'mysql+pymysql://{db_username}:{db_password}@{db_ip}:{db_port}/{database}'

        # 初始化数据库链接
        engine = create_engine(db_info)
        # 创建DBSession类型
        db_session = sessionmaker(bind=engine)
        # 创建session,实例化
        new_session = db_session()
        return new_session
    except Exception as error_info:
        Logger().error("初始化数据库链接失败:" + str(error_info))
Exemplo n.º 8
0
#!/usr/bin/env python3
# -*-coding:utf-8-*-

import time

from selenium.common.exceptions import *  # 导入所有的异常类
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait

from common.utils.config import *
from common.utils.logger import Logger

# create a logger instance
logger = Logger(logger='BasePage').getlog()


class BasePage():
    def __init__(self, driver):
        """
        :param driver:打开浏览器驱动
        """
        self.driver = driver
        self.config = Config()

    def get_page_title(self):
        logger.info("当前页面的title为: %s" % self.driver.title)
        return self.driver.title

    def find_element(self, *loc):
Exemplo n.º 9
0
#!/usr/bin/env python3
# -*-coding:utf-8-*-

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

from common.utils.config import Config
from common.utils.logger import Logger

logger = Logger(logger="BrowserDriver").getlog()


class BrowserDriver(object):
    """
    驱动类,封装driver设置信息,返回
    """

    # path = './drivers/'  # 这是获取相对路径的方法
    # chrome_driver_path = path + 'chromedriver.exe'
    # firfox_driver_path = path + 'chromedriver.exe'
    # ie_driver_path = path + 'IEDriverServer.exe'

    def __init__(self):
        self.driver = None
        self.config = Config()
        self.browser_name = self.config.get('browser').get(
            'name')  # 从配置文件读取浏览器名称
        self.driver_path = self.config.get('browser').get(
            'driver_path')  # 从配置文件读取driver地址
        logger.info(f"选择的浏览器为: {self.browser_name}浏览器")
        url = self.config.get('URL')  # 从配置文件读取访问地址
Exemplo n.º 10
0
#!/usr/bin/env python3
# -*-coding:utf-8-*-
import unittest

from ddt import ddt, data

from common.browser import BrowserDriver
from common.utils import readFile
from common.utils.logger import Logger
from page.login_page import LoginPage

logger = Logger('TestLoginPage').getlog()

# 读取测试用例到列表
case_list = readFile.ExcelReader('data/logincase.xlsx',
                                 sheet=0,
                                 title_line=True).data
# logger.info(f'读取测试用例excel:{case_list}')


@ddt
class TestLoginPage(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.browser = BrowserDriver()  # 初始化浏览器对象
        cls.page = LoginPage(cls.browser.get_driver())

    @classmethod
    def tearDownClass(cls):
        cls.browser.quit_browser()