Exemplo n.º 1
0
#!/user/bin/env python
# -*- coding: utf-8 -*-
# __author__ = yangyd 
# Create time: 2019/7/10 0010 9:31


import pymysql
import random
import string

from common_code.operate_config import DoConfig
from common_code.project_path import CONFIG_FILE_PATH

conf = DoConfig(CONFIG_FILE_PATH)


class OperateMysql:

    # 初始化一个数据库连接和游标
    def __init__(self):
        self.connect = pymysql.connect(
            host=conf.read_info('Mysql', 'host'),
            port=conf.read_int('Mysql', 'port'),
            user=conf.read_info('Mysql', 'user'),
            password=conf.read_info('Mysql', 'password'),
            db=conf.read_info('Mysql', 'db'),
            charset=conf.read_info('Mysql', 'charset'),
            cursorclass=pymysql.cursors.DictCursor
        )

        self.cursor = self.connect.cursor()
Exemplo n.º 2
0
# 测试用例文件路径
CASE_PATH = os.path.join(PROJECT_PATH, 'test_datas')
CASE_FILE_PATH = os.path.join(CASE_PATH, 'test_cases.xlsx')

# 配置文件路径
CONFIG_PATH = os.path.join(PROJECT_PATH, 'config_file')
CONFIG_FILE_PATH = os.path.join(CONFIG_PATH, 'config.conf')

USER_FILE_PATH = os.path.join(CONFIG_PATH, 'user.conf')

# 日志路径
LOG_PATH = os.path.join(PROJECT_PATH, 'logs')
LOG_FILE_PATH = os.path.join(LOG_PATH, 'request_log.txt')

# 测试报告路径
path_conf = DoConfig(CONFIG_FILE_PATH)

# 报告结尾添加时间戳
timestamp = datetime.strftime(datetime.now(), '%Y-%m-%d-%H-%M-%S')
html = path_conf.read_info('Report', 'html_name')
report_name = html + '_' + timestamp

REPORT_PATH = os.path.join(PROJECT_PATH, 'reports')
REPORT_FILE_PATH = os.path.join(REPORT_PATH, report_name + '.html')

# 测试类文件路径
TEST_CASES_PATH = os.path.join(PROJECT_PATH, 'test_cases')

if __name__ == '__main__':
    print(PROJECT_PATH)
    print(CASE_PATH)
Exemplo n.º 3
0
 def __init__(self):
     self.conf = DoConfig(os.path.join(CONFIG_PATH, 'user.conf'))
Exemplo n.º 4
0

import unittest
from libs.ddt import ddt, data
from common_code.operate_http_requests import HttpRequest
from common_code import project_path
from common_code.operate_config import DoConfig
from common_code.operate_log import my_logger
from common_code.operate_excel import DoExcel
from common_code.parameterization import Parameter

add_data = DoExcel(project_path.CASE_FILE_PATH, 'add').read_excel(2)

login_success = DoExcel(project_path.CASE_FILE_PATH, 'loginsuccess').read_excel(3, end_row=3)

succeed = DoConfig(project_path.CONFIG_FILE_PATH).read_info('test_result', 'succeed')
failed = DoConfig(project_path.CONFIG_FILE_PATH).read_info('test_result', 'failed')


@ddt
class TestAdd(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.request = HttpRequest()
        cls.session_request = cls.request.request_session

    @data(*add_data)
    def test_add(self, add):
        print("测试的用例是:{}".format(add['description']))
        login_data = Parameter.add_parameter(login_success[0]['param'])
Exemplo n.º 5
0
class RegFixeUser:

    def __init__(self):
        self.conf = DoConfig(os.path.join(CONFIG_PATH, 'user.conf'))

    @staticmethod
    def reg_borrow():
        do_mysql = OperateMysql()

        reg_url = 'http://tj.lemonban.com/futureloan/mvc/api/member/register'
        phone = do_mysql.unreg_phone()
        param = {"mobilephone": phone, "pwd": "123456", "regname": "borrow_nesta"}

        reg_request = HttpRequest()

        while True:
            reg_request.http_request(reg_url, 'post', param)

            sql = 'SELECT id FROM member where MobilePhone = %s'
            res = do_mysql.run_sql(sql, (phone,))
            if res:
                borrow_data = {
                    'borrow_user': {'mobilephone': phone,
                                    'memberid': res[0]['id'],
                                    'pwd': 123456
                                    }
                }

                # self.conf.batch_write('borrow_user', data, os.path.join(CONFIG_PATH, 'user.conf'))
                do_mysql.mysql_close()
                break
        return borrow_data

    @staticmethod
    def reg_invest():
        do_mysql = OperateMysql()

        reg_url = 'http://tj.lemonban.com/futureloan/mvc/api/member/register'
        phone = do_mysql.unreg_phone()
        param = {"mobilephone": phone, "pwd": "123456", "regname": "invest_nesta"}
        reg_request = HttpRequest()

        while True:

            reg_request.http_request(reg_url, 'post', param)

            sql = 'SELECT id FROM member where MobilePhone = %s'
            res = do_mysql.run_sql(sql, (phone,))
            if res:
                # invest_data = {'mobilephone': phone,
                #                'memberid': res[0]['id'],
                #                'pwd': 123456
                #                }
                # self.conf.batch_write('invest_user', data, os.path.join(CONFIG_PATH, 'user.conf'))
                do_mysql.mysql_close()
                break

        invest_data = {
            'invest_user': {'mobilephone': phone,
                            'memberid': res[0]['id'],
                            'pwd': 123456
                            }
        }

        return invest_data

    @staticmethod
    def reg_admin():
        do_mysql = OperateMysql()

        reg_url = 'http://tj.lemonban.com/futureloan/mvc/api/member/register'
        phone = do_mysql.unreg_phone()
        param = {"mobilephone": phone, "pwd": "123456", "regname": "admin_nesta"}
        reg_request = HttpRequest()

        while True:
            reg_request.http_request(reg_url, 'post', param)

            sql = 'SELECT id FROM member where MobilePhone = %s'
            res = do_mysql.run_sql(sql, (phone,))
            if res:
                admin_data = {
                    'admin_user': {'mobilephone': phone,
                                   'memberid': res[0]['id'],
                                   'pwd': 123456
                                   }
                }

                # self.conf.write_config(data, os.path.join(CONFIG_PATH, 'user.conf'))
                do_mysql.mysql_close()
                break
        return admin_data

    def crate_config(self):
        data = {}

        data.update(self.reg_borrow())
        data.update(self.reg_invest())
        data.update(self.reg_admin())

        self.conf.write_config(data, os.path.join(CONFIG_PATH, 'user.conf'))
Exemplo n.º 6
0
#!/user/bin/env python
# -*- coding: utf-8 -*-
# __author__ = yangyd 
# Create time: 2019/7/8 0008 14:25


from openpyxl import load_workbook
from common_code.operate_config import DoConfig
from common_code.project_path import CONFIG_FILE_PATH

conf = DoConfig(CONFIG_FILE_PATH)
actual_col = conf.read_int('test_result', 'actual_col')
test_col = conf.read_int('test_result', 'test_col')


class DoExcel:

    def __init__(self, file_path, sheet_name=None):
        """
        打开文件,并获取工作薄
        :param file_path: 文件路径
        :param sheet_name: sheet名
        """
        self.file_path = file_path
        self.sheet_name = sheet_name

    def read_excel(self, start_row=1, start_col=1, end_row=None, end_col=None):
        """
        读取指定行列的所有数据
        :param start_row: 起始行,默认为1
        :param start_col: 起始列,默认为1
Exemplo n.º 7
0
#!/user/bin/env python
# -*- coding: utf-8 -*-
# __author__ = yangyd
# Create time: 2019/6/27 0027 13:23

import logging
from common_code import project_path
from common_code.operate_config import DoConfig

log_path = project_path.LOG_FILE_PATH
conf = DoConfig(project_path.CONFIG_FILE_PATH)


class MyLog:
    def __init__(self):
        # 创建日志收集器,并设置日志等级
        self.logger = logging.getLogger(conf.read_info('log', 'log_name'))
        self.logger.setLevel(conf.read_info('log', 'gather_level'))

        # 创建日志渠道  控制台或者文件
        self.console_log = logging.StreamHandler()
        self.file_log = logging.FileHandler(project_path.LOG_FILE_PATH,
                                            encoding='utf-8')

        # 设置日志输出格式
        con_format = logging.Formatter(conf.read_info('log', 'con_format'))
        file_format = logging.Formatter(conf.read_info('log', 'file_format'))

        self.console_log.setFormatter(con_format)
        self.file_log.setFormatter(file_format)
Exemplo n.º 8
0
class Parameter:
    unreg_pattern = r'\$\{no_reg_phone\}'
    reg_pattern = r'\$\{yet_regist_phone\}'
    recharge_pattern = r'\$\{yet_regist_phone\}'
    add_pattern = r'\$\{add_memberid\}'
    loan_pattern = r'\$\{loan_memberid\}'
    loan_id_pattern = r'\$\{loan_Id\}'
    admin_user_pattern = r'\$\{admin_user\}'
    borrow_id_pattern = r'\$\{borrow_memberid\}'

    conf = DoConfig(USER_FILE_PATH)

    @classmethod
    def unreg_phone_replace(cls, reg_data):
        """
        未注册手机号替换
        :param reg_data:
        :return:
        """
        if re.search(cls.unreg_pattern, reg_data):
            do_mysql = OperateMysql()
            unreg_phone = do_mysql.unreg_phone()
            reg_data = re.sub(cls.unreg_pattern, unreg_phone, reg_data)

            do_mysql.mysql_close()
        return reg_data

    @classmethod
    def reg_phone_replace(cls, reg_data):
        """
        已注册手机号替换
        :param reg_data:
        :return:
        """
        if re.search(cls.reg_pattern, reg_data):
            do_mysql = OperateMysql()

            reg_phone = do_mysql.reg_phone()
            reg_data = re.sub(cls.reg_pattern, reg_phone, reg_data)

            do_mysql.mysql_close()

        return reg_data

    @classmethod
    def register_parameter(cls, reg_data):
        """
        注册相关数据正则替换
        :param reg_data:
        :return:
        """
        reg_data = cls.unreg_phone_replace(reg_data)

        reg_data = cls.reg_phone_replace(reg_data)

        return reg_data

    @classmethod
    def login_parameter(cls, login_data):
        """
        登录数据参数化
        :param login_data:
        :return:
        """
        login_data = cls.unreg_phone_replace(login_data)
        login_data = cls.reg_phone_replace(login_data)

        return login_data

    @classmethod
    def recharge_parameter(cls, recharge_data):
        """
        充值数据参数化
        :param recharge_data:
        :return:
        """
        # 读取配置文件中已有投资人号码
        rech_phone = cls.conf.read_info('invest_user', 'mobilephone')

        if re.search(cls.recharge_pattern, recharge_data):
            recharge_data = re.sub(cls.recharge_pattern, rech_phone,
                                   recharge_data)

        return recharge_data

    @classmethod
    def add_parameter(cls, add_data):
        add_memberid = cls.conf.read_info('borrow_user', 'memberid')
        add_phone = cls.conf.read_info('invest_user', 'mobilephone')
        if re.search(cls.add_pattern, add_data):
            add_data = re.sub(cls.add_pattern, add_memberid, add_data)
        if re.search(cls.reg_pattern, add_data):
            add_data = re.sub(cls.reg_pattern, add_phone, add_data)

        return add_data

    @classmethod
    def loan_parameter(cls, loan_data):
        admin_phone = cls.conf.read_info('admin_user', 'mobilephone')
        loan_memberid = cls.conf.read_info('invest_user', 'memberid')
        loan_phone = cls.conf.read_info('invest_user', 'mobilephone')
        borrow_id = cls.conf.read_info('borrow_user', 'memberid')

        # 替换投资人ID
        loan_data = re.sub(cls.loan_pattern, loan_memberid, loan_data)
        # 替换投资人帐号
        loan_data = re.sub(cls.recharge_pattern, loan_phone, loan_data)
        # 替换管理员帐号
        loan_data = re.sub(cls.admin_user_pattern, admin_phone, loan_data)
        # 替换借款人ID
        loan_data = re.sub(cls.borrow_id_pattern, borrow_id, loan_data)
        # 获取属性并参数化标ID
        if re.search(cls.loan_id_pattern, loan_data):
            loan_id = str(getattr(cls, "loan_id"))
            loan_data = re.sub(cls.loan_id_pattern, loan_id, loan_data)
        return loan_data
Exemplo n.º 9
0
import unittest
import os
from common_code.operate_config import DoConfig
# from test_cases import register_test
# from test_cases import add_test
# from test_cases import login_test
# from test_cases import recharge_test
# from test_cases import bidlodn_test

from libs.HTMLTestRunnerNew import HTMLTestRunner
from common_code.project_path import CASE_PATH, REPORT_FILE_PATH, USER_FILE_PATH, TEST_CASES_PATH
from common_code.project_path import CONFIG_FILE_PATH
from common_code.reg_fixed_account import RegFixeUser

conf = DoConfig(CONFIG_FILE_PATH)

# 判断用户文件是否已创建
if not os.path.exists(USER_FILE_PATH):
    RegFixeUser().crate_config()

# suite = unittest.TestSuite()
# loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromModule(register_test))
# suite.addTest(loader.loadTestsFromModule(recharge_test))
# suite.addTest(loader.loadTestsFromModule(login_test))
# suite.addTest(loader.loadTestsFromModule(bidlodn_test))
# suite.addTest(loader.loadTestsFromModule(add_test))

# 自动识别指定文件夹下的测试文件
suite = unittest.defaultTestLoader.discover(TEST_CASES_PATH,