Ejemplo n.º 1
0
 def setUpClass(cls):
     '''登录获取token,用户id'''
     cls.excel.wb = openpyxl.load_workbook(cls.excel.path)  # 重新载入workbook
     params = config.get("PRESET", "loan_params")
     respone = com_request(TestUpdate, "login", params=params)
     cls.token = "Bearer" + " " + jsonpath(respone, "$..token")[0]
     cls.member_id = jsonpath(respone, "$..id")[0]
Ejemplo n.º 2
0
def env_projects_create():
    '''生成一项目,将项目信息写入conf.ini文件'''
    try:
        # -------------------登录普通账户获取token----------------------------------------------
        params = config.get("PRESET", "unadmin_params")
        respone = com_request(env_projects_create, "login", params=params)
        token = "JWT" + " " + respone.json()["token"]
        # -------------------创建项目----------------------------------------------
        params = {
            "name": "*name new 5 en*",
            "leader": "孙忘",
            "tester": "孙忘",
            "programmer": "孙忘",
            "publish_app": "自动化分析工具",
            "desc": "时序自动化"
        }
        respone = com_request(env_projects_create,
                              "projects",
                              params=params,
                              token=token)
        if respone.status_code == 201:
            config_write("PRESET", "projects", str(respone.json()))
        else:
            raise ValueError
    except Exception as e:
        raise ValueError
Ejemplo n.º 3
0
def creat_driver():
    '''根据配置文件设置 生成浏览器驱动'''
    browse = config.get("RUN", "browse")  # 获取浏览器名
    driver_path = config.get("RUN", "drive_path")  # 获取驱动路径
    # 根据浏览器生成驱动
    if browse.lower() == 'chrome':
        options = webdriver.ChromeOptions()
        if config.getboolean("RUN", "headless"):
            options.add_argument("headless")  # 无头模式
            options.add_argument('--disable-gpu')  # 禁用GPU
            options.add_argument('--no-sandbox')  # 非沙箱环境
        driver = webdriver.Chrome(executable_path=driver_path,
                                  options=options)  # 生成驱动
    elif browse.lower() == 'edge':
        driver = webdriver.Edge(executable_path=driver_path)  # 生成驱动

    return driver
Ejemplo n.º 4
0
def com_request(cls, api, **kwargs):
    '''通用请求方式'''
    # -------------------请求接口----------------------------
    api_url = config.get("URL", "url") + params_get(config.get("URL", api + "_url"), cls, 1)  # 登录接口请求地址

    # -------------------请求参数----------------------------
    params = params_get(str(kwargs["params"]).replace("\n", ""), cls)  # 参数处理
    setattr(cls, "params", params)
    method = config.get("METHOD", api + "_method")

    # -------------------请求头----------------------------
    headers={}
    if "token" in kwargs.keys():
        headers["Authorization"] = kwargs["token"]  

    # -------------------请求响应----------------------------
    respone = requests.request(method, api_url, json=params, headers=headers)  # 请求
    return respone
Ejemplo n.º 5
0
class TestWithdraw(unittest.TestCase):
    '''提现接口测试'''
    Worksheet_name = "withdraw"
    excel, data_list = com_excel_read(Worksheet_name)
    leave_amount_max = config.get("PRESET", "leave_amount_max")  # 获取提取上限

    @classmethod
    def setUpClass(cls):
        '''登录获取token,用户id'''
        cls.excel.wb = openpyxl.load_workbook(cls.excel.path)  # 重新载入workbook
        params = config.get("PRESET", "loan_params")
        respone = com_request(TestWithdraw, "login", params=params)
        cls.token = "Bearer" + " " + jsonpath(respone, "$..token")[0]
        cls.member_id = jsonpath(respone, "$..id")[0]

    def setUp(self):
        pass

    @ddt.data(*data_list)
    @ddt.unpack
    def test_case(self, info, **kwargs):
        '''{info}'''
        try:
            if kwargs["sql_cheack"]:  # 存在sql校验,获取初期余额
                res = mysql.sql_read(kwargs["sql_cheack"], self.member_id)
                amount_prime = res["leave_amount"]
            respone = com_request(TestWithdraw,
                                  self.Worksheet_name,
                                  **kwargs,
                                  token=self.token)
            if kwargs["sql_cheack"]:  # 存在sql校验,获取提现后余额
                res = mysql.sql_read(kwargs["sql_cheack"], self.member_id)
                amount_new = res["leave_amount"]
                amount = amount_prime - amount_new
                print(f"实际{info[:2]}:", float(amount))
                print(f"预期{info[:2]}:", float(self.params["amount"]))
                self.assertEqual(float(amount),
                                 float(self.params["amount"]))  # 校验提现的余额实际与预期
            com_assertEqual(self, respone, eval(kwargs["expect"]))
        except AssertionError as e:
            print(e)
            log.error(f"用例--{info}--执行失败", exc_info=True)
            self.excel.excel_write(self.Worksheet_name, kwargs["id"], "失败")
            raise e
        else:
            log.info(f"用例--{info}--执行成功", exc_info=False)
            self.excel.excel_write(self.Worksheet_name, kwargs["id"], "成功")

    def tearDown(self):
        pass

    @classmethod
    def tearDownClass(cls):
        cls.excel.wb.save(cls.excel.path)
        cls.excel.wb.close()
Ejemplo n.º 6
0
def member_id_get(mark, cls):
    '''替换*member参数'''
    if "exist" in mark:
        member_id = getattr(cls, mark[0])
    elif "new" in mark:
        while True:
            sql = "select id from futureloan.member where 1 order by rand() limit 10;"  # 截取一个已注册id
            res = mysql.sql_read(sql)
            if int(res["id"]) != int(getattr(cls, mark[0])):
                member_id = res["id"]
                break
    elif "nuexist" in mark:
        sql = "select max(id) from futureloan.member;"  # 截取一个未注册id
        res = mysql.sql_read(sql)
        member_id = res["max(id)"] + 1
    elif "unadmin" in mark:
        member_id = eval(config.get("SETUPDATA", "params"))["mobile_phone"]
    elif "admin" in mark:
        member_id = eval(config.get("SETUPDATA",
                                    "admin_params"))["mobile_phone"]
    return member_id
Ejemplo n.º 7
0
def env_params_recharge(amount, times):
    # ---------------------普通账户登录--------------------------------
    params = config.get("PRESET", "loan_params")
    respone = com_request(env_params_regist, "login", params=params)
    token = "Bearer" + " " + jsonpath(respone, "$..token")[0]
    # ---------------------普通账户充值--------------------------------
    params = {"member_id": jsonpath(respone, "$..id")[0], "amount": amount}
    for i in range(times):
        respone = com_request(env_params_add_audit,
                              "recharge",
                              params=params,
                              token=token)
Ejemplo n.º 8
0
def inverst_setup_class():
    '''投资测试类用例前后置'''
    # 生成驱动
    driver = creat_driver()
    driver.maximize_window()
    driver.implicitly_wait(20)
    # 登录
    loginpage = LoginPage(driver)
    loginpage.fresh()
    loginpage.login(config.get("PRESENT", "phone"),
                    config.get("PRESENT", "pwd"))
    # 主页进入抢投标
    homepage = HomePage(driver)
    homepage.inverst()
    # 投标页面
    url = homepage.get_url()
    inverstpage = InverstPage(driver)
    # 用户页面
    userpage = UserPage(driver)
    yield inverstpage, url, userpage  # 分割前后置的 yeild之前是前置方法,yeild之后是后置
    inverstpage.quit_driver()
Ejemplo n.º 9
0
def phone_create(mark):
    '''替换*phone参数'''
    if "new" in mark:
        while True:
            phone = "156{:0<8}".format(random.randint(0, 99999999))  # 创建新号码
            sql = "select mobile_phone from futureloan.member where mobile_phone=%s;"
            res = mysql.sql_read(sql, phone)  # 执行sql语句
            if not res:  # 返回结果未None表示无该手机号码
                break
    elif "exist" in mark:
        phone = eval(config.get("PRESET",
                                "loan_params"))["mobile_phone"]  # 提取一个已注册手机
    return phone
Ejemplo n.º 10
0
def projects_interfaces_get(params_list, cls=None):
    if params_list[0] == "projects":
        database_name = "tb_projects"
    elif params_list[0] == "interfaces":
        database_name = "tb_interfaces"

    if "id" in params_list:
        if "exist" in params_list:
            id = eval(config.get("PRESET", params_list[0]))["id"]
        elif "new" in params_list:
            sql = f"SELECT max(id) FROM test.{database_name};"
            res = mysql.sql_read(sql)
            id = int(res["max(id)"]) + 100
    return id
Ejemplo n.º 11
0
def env_params_add_audit():
    '''预置投资项目100000000'''
    # ---------------------借款账户登录--------------------------------
    params = config.get("PRESET", "invest_params")
    respone = com_request(env_params_regist, "login", params=params)
    token = "Bearer" + " " + jsonpath(respone, "$..token")[0]
    # ---------------------普通账户添加项目--------------------------------
    params = {
        "member_id": jsonpath(respone, "$..id")[0],
        "title": "预置投资项目100000000",
        "amount": 100000000,
        "loan_rate": 1,
        "loan_term": 1,
        "loan_date_type": 1,
        "bidding_days": 1
    }
    respone = com_request(env_params_add_audit,
                          "add",
                          params=params,
                          token=token)
    loan_id = jsonpath(respone, "$..id")[0]

    # ---------------------管理账户登录--------------------------------
    params = config.get("PRESET", "admin_params")
    respone = com_request(env_params_add_audit, "login", params=params)
    token = "Bearer" + " " + jsonpath(respone, "$..token")[0]
    # ---------------------管理账户审核--------------------------------
    params = {"loan_id": loan_id, "approved_or_not": True}
    respone = com_request(env_params_add_audit,
                          "audit",
                          params=params,
                          token=token)
    assert respone["code"] == 0
    config_write("SETUPDATA", "audit_loan", {
        "loan_id": loan_id,
        "amount": 100000000
    })
Ejemplo n.º 12
0
def username_get(params_list, cls=None):
    if "new" in params_list:
        while True:
            username = data_create("str", params_list[2])
            sql = "SELECT count(username) FROM test.auth_user WHERE username=%s;"
            res = mysql.sql_read(sql, username)
            if res["count(username)"] == 0:
                break
    elif "unadmin" in params_list:
        username = eval(config.get("PRESET", "unadmin_params"))["username"]
    elif "exist" in params_list:
        sql = "SELECT username FROM test.auth_user WHERE 1 ORBDER BY rand() LIMIT 1;"
        res = mysql.sql_read(sql)
        username = res["username"]
    return username
Ejemplo n.º 13
0
def env_testcases_create():
    '''生成一接口,将接口信息写入conf.ini文件'''
    try:
        # -------------------登录普通账户获取token----------------------------------------------
        params = config.get("PRESET", "unadmin_params")
        respone = com_request(env_projects_create, "login", params=params)
        token = "JWT" + " " + respone.json()["token"]
        # -------------------创建接口----------------------------------------------
        params = {
            "name": "*tcname new 200 ec*",
            "tester": "孙忘",
            "project_id": "*projects id exist*",
            "desc": "时序自动化"
        }
        respone = com_request(env_testcases_create,
                              "interfaces",
                              params=params,
                              token=token)
        if respone.status_code == 201:
            config_write("PRESET", "interfaces", str(respone.json()))
        else:
            raise ValueError
    except Exception as e:
        raise ValueError
Ejemplo n.º 14
0
 def fresh(self, url=""):
     '''刷新网页'''
     BasePage.fresh(config.get("URL", "home_url"))
Ejemplo n.º 15
0
 def fresh(self):
     '''刷新网页'''
     super().fresh(
         config.get("URL", "base_url") + config.get("URL", "login_url"))
def com_excel_read(sheetname):
    workbook_name = config.get("EXCEL", "workbook_name")  # 工作簿名
    excel = ExcelOperate(workbook_name)  # 打开excel
    data_list = excel.excel_read(sheetname)  # 获取数据
    return excel, data_list
Ejemplo n.º 17
0
        self.con = pymysql.connect(host=host,
                                   port=port,
                                   user=user,
                                   password=password,
                                   charset=charset)
        self.cur = self.con.cursor(pymysql.cursors.DictCursor)

    def sql_read(self, sql, params="", mode="one"):
        if params == "":
            mysql.cur.execute(sql)
        else:
            mysql.cur.execute(sql, params)
        if mode == "one":
            res = self.cur.fetchone()
        else:
            res = self.cur.fetchall()
        self.con.commit()
        return res


mysql = Mysql(host=config.get("DB1", "url"),
              port=config.getint("DB1", "port"),
              user=config.get("DB1", "user"),
              password=config.get("DB1", "pwd"),
              charset=config.get("DB1", "charset"))

if __name__ == "__main__":
    sql = "select reg_name, mobile_phone from futureloan where mobile_phone like '156%'"
    res = mysql.sql_read(sql)
    print(res)
Ejemplo n.º 18
0
 def __init__(self):
     self.invest = ("XPATH", r'//span[text()=%s]/ancestor::div[2]//a[text()="抢投标"]' % config.get("PRESENT", "inverst_name"))  # 抢投标
     self.islogin = ("XPATH", f"//a[text()=%s]")  # 登录用户显示
     self.quit = ("XPATH", r'//a[text()="退出"]')  # 退出登录
Ejemplo n.º 19
0
from com_func.getpath import testpath
from com_func.confread import config
from com_func.sql_request import mysql
from com_func.env_func import env_params_init
import unittest
import unittestreport
import os

# 测试套件
test_suit = unittest.TestSuite()
# 测试加载器
test_loder = unittest.TestLoader()
# 加载加载器
test_suit.addTest(test_loder.discover(testpath.TEST_CASE_DIR_PATH))
# 预置环境账号
env_params_init()

if __name__ == "__main__":
    test_run = unittestreport.TestRunner(test_suit,
                                         tester="孙忘",
                                         desc="孙忘产生的测试报告",
                                         filename=os.path.join(
                                             testpath.REPORT_DIR_PATH,
                                             config.get("FILE_NAME",
                                                        "report")))
    test_run.run()
    test_run.send_email("smtp.qq.com", 465, "*****@*****.**",
                        "bhcppjhdtmuhbfbe", "*****@*****.**", True)
    mysql.con.close()