예제 #1
0
    def case_invest(self, data, login_data, db: HandleMysql = None):

        member = MemberApi()
        # 管理员登录-加标-审核
        audit_res = self.case_audit(data, login_data)
        # 获取审核通过后的标的id
        pass_loan_id = audit_res['loan_id']
        # 投资人登录
        investor_account = member.conf_data['investor_account']
        # 获取投资人登录信息
        investor_login_data = member.get_login_data(**investor_account)
        data = self.template(data, {'invest_member_id': investor_login_data['member_id'],
                                    'loan_id': pass_loan_id})
        if data['check_sql']:
            before_investor_balance = investor_login_data['leave_amount']
            # 投资人投资
            invest_res = self.invest_loan_api(**data['invest_json'],
                                              token=investor_login_data['token']).json()
            invest_info = member.get_user_info_api(investor_login_data['member_id'],
                                                   investor_login_data['token']).json()
            after_investor_balance = invest_info['data']['leave_amount']
            # 投资人投资金额 = 投资前账户余额 - 投资后账户余额
            invest_amount = before_investor_balance - after_investor_balance
            # 投资完成后,invest表和financeLog表分别增加一条记录
            invest_num = db.count(data['check_sql']['check_invest'])
            finance_num = db.count(data['check_sql']['check_financeLog'])
            invest_res['invest_num'] = invest_num
            invest_res['financeLog_num'] = finance_num
            invest_res['invest_amount'] = self.to_two_decimal(invest_amount)
        else:
            invest_res = self.invest_loan_api(**data['invest_json'],
                                              token=investor_login_data['token']).json()
        return invest_res
예제 #2
0
 def case_withdraw(self, data, login_data, db: HandleMysql):
     """
     账户提现业务场景
     :param data: 提现接口所需参数
     :param login_data: 登录响应结果提取
     :param db: 数据库连接对象
     :return:
     """
     # 替换数据
     data = self.template(data, {'member_id': login_data['member_id'],
                                 'mobile_phone': login_data['mobile_phone']})
     # logger.info(f'替换后的数据:{data}')
     if data['sql']:
         # 充值前账户余额
         try:
             before_balance: Decimal = db.get_one(data['sql'])[0]
         except Exception as e:
             logger.error('报错了')
             logger.exception(e)
             raise e
         # logger.info(f'充值前账户余额:{before_balance}')
         withdraw_response = self.withdraw_api(data['member_id'], data['amount'], login_data['token'])
         res = withdraw_response.json()
         # 充值后账户余额
         after_balance: Decimal = db.get_one(data['sql'])[0]
         # logger.info(f'充值后账户余额:{after_balance}')
         withdraw: Decimal = before_balance - after_balance
         # logger.info(f'提现后,数据库金额变化差值:{withdraw}')
         res['withdraw'] = withdraw
     else:
         recharge_response = self.recharge_api(data['member_id'], data['amount'], login_data['token'])
         res = recharge_response.json()
     return res
예제 #3
0
 def clear_alone_base():
     # 清空单独的库
     db_table = {
         'ct_db': ['t_account', 't_user_info'],
         'sms_db': ['t_ip_limeit', 't_mobile_limit'],
         'user_db': ['t_user_auto_info', 't_user_info']
     }
     for db in db_table:
         for table in db_table[db]:
             print('正在清空{}库{}表'.format(db, table))
             query_sql = 'delete from {}'.format(table)
             HandleMysql.handle_mysql(query_sql, db, 'update')
             print('清空完毕')
예제 #4
0
 def case_add_loan(self, data, login_data, db: HandleMysql = None):
     # 替换数据
     data = self.template(data, {'member_id': login_data['member_id']})
     if data['sql']:
         before_num: int = db.count(data['sql'])
         add_loan_response = self.add_loan_api(**data['json'], token=login_data['token'])
         res = add_loan_response.json()
         after_num: int = db.count(data['sql'])
         add_num = after_num - before_num
         res['add_num'] = add_num
     else:
         add_loan_response = self.add_loan_api(**data['json'], token=login_data['token'])
         res = add_loan_response.json()
     return res
예제 #5
0
class Add(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'add')
    case = exce.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls) -> None:
        url = conf.get('env', 'url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respones = request(url=url, method='post', json=data, headers=headers)
        res = respones.json()
        token = 'Bearer' + ' ' + jsonpath.jsonpath(res, '$..token')[0]
        member_id = str(jsonpath.jsonpath(res, '$..id')[0])
        setattr(EnvData, 'token', token)
        setattr(EnvData, 'member_id', member_id)

    @data(*case)
    def test_add(self, cas):
        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        #查询添加项目之前的标的数量
        if cas['check_sql']:
            sql = replace_data(cas['check_sql'])
            f = self.bb.find_count(sql)

        respones = request(url=url, method=method, json=data, headers=headers)
        res = respones.json()
        print('预期结果:', expected)
        print('实际结果:', res)

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            #查询加标后标的数量
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                q = self.bb.find_count(sql)
                self.assertEqual(1, q - f)

        except AssertionError as e:
            log.error('该用例{}错误'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('该用例{}通过'.format('通过'))
            self.exce.write(row=row, column=8, value='通过')
예제 #6
0
class Withdraw(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR,'apicases.xlsx'),'withdraw')
    case = exce.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls) -> None:
        url = conf.get('env','url') + '/member/login'
        data = {
            'mobile_phone':conf.get('test_data','phone'),
            'pwd':conf.get('test_data','pwd')
        }
        headers = eval(conf.get('env','headers'))
        respones = request(url=url,method='post',json=data,headers=headers)
        re = respones.json()
        token = 'Bearer' + " " + jsonpath.jsonpath(re,'$..token')[0]
        member_id = str(jsonpath.jsonpath(re,'$..id')[0])
        setattr(EnvData,'token',token)
        setattr(EnvData,'member_id',member_id)

    @data(*case)
    def test_withdraw(self,cas):
        url = conf.get('env','url') + cas['url']
        method = cas['method']
        #替换用例中中的#member_id#
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        headers = eval(conf.get('env','headers'))
        headers['Authorization'] = getattr(EnvData,'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        #查询取现之前的金额
        if cas['check_sql']:
            sql = replace_data(cas['check_sql'])
            money_start = self.bb.find_one(sql)['leave_amount']

        respons = request(url=url,method=method,json=data,headers=headers)
        res = respons.json()

        try:
            self.assertEqual(expected['code'],res['code'])
            self.assertEqual(expected['msg'],res['msg'])
            #查询取现之后账户的金额
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                money_end = self.bb.find_one(sql)['leave_amount']
                #将用例数据的金额数值类型转换为decimal
                f = decimal.Decimal(str(data['amount']))
                self.assertEqual(f,money_start-money_end)
        except AssertionError as e:
            log.error('该用例{}未通过'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row,column=8,value='不通过')
            raise e
        else:
            log.info('该用例{}通过'.format(cas['title']))
            self.exce.write(row=row,column=8,value='不通过')
예제 #7
0
class Register(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR,'case.xlsx'),'register')
    case = exce.read_excel()
    bb = HandleMysql()



    @data
    def test_register(self,cas):
        url = conf.get('env','url2') + '/user/register/'
        method = cas['method']
        expected = eval(cas['expected'])
        if '#username#' in cas['data']:
            username = self.usernam_data()
            setattr(EnvData,'username',username)
            cas['data'] = replace_data(cas['data'])
        if '#email#' in cas['data']:
            email = self.email_data()
            setattr(EnvData,'email',email)
            cas['data'] = replace_data(cas['data'])

        data = eval(cas['data'])
        respones = request(url=url,method=method,json=data)
        res = respones.json()
        #判断用户名是否注册
        url3 = 'http://api.keyou.site:8000/keyou1/count/'


        try:
            self.assertEqual(res[ ])




    @classmethod
    def usernam_data(cls):
        while True:
            name = 'huihui'
            for i in range(5):
                r = random.randint(0, 9)
                name += str(r)
            sql = 'select * from test.auth_user where username={}'.format(name)
            qs = cls.bb.find_count(sql)
            if qs == 0:
                return name

    @classmethod
    def email_data(cls):
        while True:
            n = '1'
            for i in range(8):
                r = random.randint(0, 9)
                n += str(r)
            sql = 'select * from test.auth_user where email={}@qq.com'.format(n)
            qs = cls.bb.find_count(sql)
            if qs == 0:
                return n
예제 #8
0
class UpdateCase(unittest.TestCase):
    excel = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'nickname')
    case = excel.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls):
        # 登录
        url = conf.get('env', 'url') + '/member/login'
        data = {'mobile_phone': '13367899876', 'pwd': 'lemonban'}
        headers = eval(conf.get('env', 'headers'))

        r = request(url=url, method='post', json=data, headers=headers)
        re = r.json()
        cls.token = 'Bearer' + ' ' + jsonpath.jsonpath(re, '$..token')[0]
        cls.member_id = jsonpath.jsonpath(re, '$..id')[0]
        cls.reg_name = jsonpath.jsonpath(re, '$..reg_name')[0]
        print('登陆时的昵称', cls.reg_name)

    @data(*case)
    def test_update(self, cas):
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = cas['data'].replace('#member_id#', str(self.member_id))
        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        method = cas['method']
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        response = request(method=method, url=url, json=data, headers=headers)
        res = response.json()

        print('预期结果:', expected)
        print('实际结果:', res)
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                sql = cas['check_sql'].replace('#member_id#',
                                               str(self.member_id))
                q = self.bb.find_one(sql)['reg_name']
                print('更新后昵称', q)
                self.assertEqual(q, expected['reg_name'])

        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #9
0
class RegisterTestcase(unittest.TestCase):
    excel = Excel_Hande(filename, 'register')
    case_data = excel.read_excel()
    bb = HandleMysql()

    @data(*case_data)
    def test_register(self, cas):

        expected = eval(cas['expected'])
        method = cas['method']
        # 用生成的随机手机号码替换#phon#
        if '#phon#' in cas['data']:
            phones = self.readom_phon()
            cas['data'] = cas['data'].replace('#phon#', phones)
        data = eval(cas['data'])
        url = cas['url']
        headers = eval(conf.get('env', 'headers'))
        row = cas['case_id'] + 1
        respons = request(method=method, url=url, json=data, headers=headers)
        res = respons.json()
        print('预期结果:', expected)
        print('实际结果:', res)

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])

            if cas['sql']:
                qy = cas['sql'].replace('#phon#', data['mobile_phone'])
                re = self.bb.find_one(qy)
                self.assertTrue(re)

        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')

    @classmethod
    def readom_phon(cls):
        while True:
            phon = '155'
            for i in range(8):
                re = random.randint(0, 9)
                phon += str(re)
            mysql = 'select * from futureloan.member where mobile_phone={}'.format(
                phon)
            sq = cls.bb.find_count(mysql)
            if sq == 0:
                return phon
예제 #10
0
class Update(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'update')
    case = exce.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls) -> None:
        url = conf.get('env', 'url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respones2 = request(url=url, method='post', json=data, headers=headers)
        res2 = respones2.json()
        token = 'Bearer' ' ' + jsonpath.jsonpath(res2, '$..token')[0]
        member_id = str(jsonpath.jsonpath(res2, '$..id')[0])
        setattr(EnvData, 'token', token)
        setattr(EnvData, 'member_id', member_id)

    @data(*case)
    def test_update(self, cas):

        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones = request(url=url, method=method, json=data, headers=headers)
        res = respones.json()

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            #判断数据库中是否更新昵称
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                s = self.bb.find_one(sql)['reg_name']
                self.assertEqual(data['reg_name'], s)

        except AssertionError as e:
            log.error('该用例{}报错'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('该用例{}通过'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')
예제 #11
0
class Register(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'register')
    case = exce.read_excel()
    my = HandleMysql()

    @data(*case)
    def test_register(self, cas):
        url = cas['url']
        method = cas['method']

        if '#phone#' in cas['data']:
            phon = self.phone_replace()
            setattr(EnvData, 'mobile_phone', phon)
            cas['data'] = replace_data(cas['data'])

        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones = request(url=url, method=method, json=data, headers=headers)
        res = respones.json()

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                f = self.my.find_count(sql)
                self.assertEqual(1, f)
        except AssertionError as e:
            log.error('这条用例{}报错'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('这条用例{}通过了'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')

    @classmethod
    def phone_replace(cls):
        while True:
            phone = '135'
            for i in range(8):
                re = random.randint(0, 9)
                phone += str(re)
            sql = 'select * from futureloan.member where mobile_phone={}'.format(
                phone)
            d = cls.my.find_count(sql)
            if d == 0:
                return phone
예제 #12
0
 def case_audit(self, data, login_data, db: HandleMysql = None):
     data = self.template(data, {'member_id': login_data['member_id']})
     # 添加项目
     add_loan_res = self.add_loan_api(**data['add_loan_json'], token=login_data['token']).json()
     loan_id = jsonpath(add_loan_res, '$..id')[0]
     # 审核
     audit_res = self.audit_loan_api(loan_id, data['audit_json']['approved_or_not']).json()
     audit_res['loan_id'] = loan_id
     if 'again' in data.keys():
         audit_res = self.audit_loan_api(loan_id, data['audit_json']['approved_or_not']).json()
     if 'sql' in data.keys() and data['sql']:
         data = self.template(data, {'loan_id': loan_id})
         status = db.get_one(data['sql'])[0]
         audit_res['status'] = status
     return audit_res
예제 #13
0
 def case_withdraw(self, data, login_data, db: HandleMysql):
     """
     账户提现业务场景
     :param data: 提现接口所需参数
     :param login_data: 登录响应结果提取
     :param db: 数据库连接对象
     :return:
     """
     # 替换数据
     data = self.template(data, {'member_id': login_data['member_id'],
                                 'mobile_phone': login_data['mobile_phone']})
     if data['sql']:
         # 充值前账户余额
         before_balance: Decimal = db.get_one(data['sql'])[0]
         withdraw_response = self.withdraw_api(data['member_id'], data['amount'], login_data['token'])
         res = withdraw_response.json()
         # 充值后账户余额
         after_balance: Decimal = db.get_one(data['sql'])[0]
         withdraw: Decimal = before_balance - after_balance
         res['withdraw'] = withdraw
     else:
         recharge_response = self.recharge_api(data['member_id'], data['amount'], login_data['token'])
         res = recharge_response.json()
     return res
예제 #14
0
class Invest(unittest.TestCase):
    excel = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'invest')
    case = excel.read_excel()
    bb = HandleMysql()

    @data(*case)
    def test_invest(self, cas):
        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        data = eval(replace_data(cas['data']))
        headers = eval(conf.get('env', 'headers'))
        if cas['interface'] != 'login':
            #如果不是登录的接口需要添加token
            headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones = request(url=url, method=method, json=data, headers=headers)
        res = respones.json()
        if cas['interface'] == 'login':
            #如果是登录接口,需要提取id和token
            token = 'Bearer' + ' ' + jsonpath.jsonpath(res, '$..token')[0]
            member_id = str(jsonpath.jsonpath(res, '$..id')[0])
            setattr(EnvData, 'token', token)
            setattr(EnvData, 'member_id', member_id)

        if cas['interface'] == 'add':
            #如果是加标接口,需要获取加标后的标id
            loan_id = str(jsonpath.jsonpath(res, '$..id')[0])
            setattr(EnvData, 'loan_id', loan_id)

        print('预期结果:', expected)
        print('实际结果:', res)
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            log.error('这是{}用例未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('用例{}通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #15
0
    def send_get_msg(mobile):  # 发送并获取验证码
        # 数据是固定的,只需更改手机号
        data = {
            'client_ip': getattr(GetData, 'ip'),
            'tmpl_ip': '1',
            'mobile': mobile
        }

        client = BaseRequest.base_request(getattr(GetData, 'sms_service_url'))
        client.service.SendMCode(data)

        # 查询验证码
        query_sql = 'select Fverify_code from t_mvcode_info_{0} where Fmobile_no={1}'.format(
            mobile[-3], mobile)
        db_name = 'sms_db_{0}'.format(mobile[-2])
        res = HandleMysql.handle_mysql(query_sql, db_name)
        return res[0]
예제 #16
0
    def test_invest(self, item):
        global check_sql_result
        logger.info('开始执行的用例{0}:{1}'.format(item['test_id'], item['title']))
        # 请求之前完成loan_id替换
        if item['data'].find('${loan_id}')  !=-1:
            if getattr(GetData,'loan_id') ==None:   # 还没有通过反射把值改了
                sql = 'select max(Id) from loan where MemberID={0}'.format(getattr(GetData, 'loan_admin_tel')) # memberID投资充值ID
                loan_id = HandleMysql().handle_mysql(sql)[0][0]
                item['data'] = item['data'].replace('${loan_id}', str(loan_id))
                setattr(GetData, 'loan_id', loan_id)  # 利用这个反射存储结果
                logger.info(loan_id)
            else:   # 通过反射已经设置了值
                logger.info(getattr(GetData, 'loan_id'))
                item['data'] = item['data'].replace('${loan_id}', str(getattr(GetData, 'loan_id')))


        # 登录
        logger.info('获取到的请求数据是:{0}'.format(item['data']))
        if item['check_sql'] != None:
            logger.info('数据库检验{0}'.format(item['title']))
            sql = eval(item['check_sql']['sql'])
            Before_Amount = HandleMysql().handle_mysql(sql, 1)[0]
            logger.info('用例:{0}请求之前余额:{1}'.format(item['title'], Before_Amount))
            logger.info('开始http接口请求...')
            res = HttpRequest.http_request(item['url'],
                                           eval(item['data']),
                                           item['http_method'],
                                           getattr(GetData, 'Cookie')
                                           )
            logger.info('完成http请求')
            After_Amount = HandleMysql().handle_mysql(sql, 1)[0]
            logger.info('用例:{0}请求之后余额:{1}'.format(item['title'], After_Amount))
            # 检查结果
            if eval(item['data']['amount']) == abs(After_Amount - Before_Amount):
                logger.info('数据库余额检验通过')
                logger.info('数据库检查通过')
                HandleExcel.write_back(test_data_path, item['sheet_name'], item['test_id'] + 1,
                               10, check_sql_result)
            else:
                logger.info('数据库余额检验不通过')
                check_sql_result = logger.info('数据库检查不通过')
            # 重新改写 HandleExcel write_back方法
            HandleExcel.write_back(test_data_path, item['sheet_name'], item['test_id'] + 1,
                               10, check_sql_result)

        else:
            logger.info('此条用例不需数据库校验:{0}'.format(item['title']))
            res = HttpRequest.http_request(item['url'],
                                       eval(item['data']),
                                       item['http_method'],
                                   getattr(GetData, 'Cookie')
                                   )

        if res.cookies:
            setattr(GetData, 'Cookie', res.cookies)
        try:
            self.assertEqual(item['excepted'], res.json()['code'])
            TestResult = 'PASS'  # 成功的
        except Exception as  e:
            TestResult = 'failed'  # 失败的
            logger.info("执行用例出错:{0}".format(e))
        finally:
            HandleExcel.write_back(test_data_path, item['sheet_name'], item['test_id'] + 1, 8,str(res.json()))
            HandleExcel.write_back(test_data_path, item['sheet_name'], item['test_id'] + 1, 9, str(res.json()))
            logger.error("获取到的结果为:{0}".format(res.json()))
예제 #17
0
def connect_mysql(request):
    db = HandleMysql(**request.param)
    yield db
    db.close()
예제 #18
0
class AddTest(unittest.TestCase):
    excel = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'add')
    case = excel.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls):
        # 准备登录用的数据
        url = conf.get('env', 'url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respons = request(method='post', url=url, json=data, headers=headers)
        re = respons.json()
        member_id = str(jsonpath.jsonpath(re, '$..id')[0])
        token = "Bearer" + " " + jsonpath.jsonpath(re, '$..token')[0]
        setattr(EnvData, 'member_id', member_id)
        setattr(EnvData, 'token', token)

    @data(*case)
    def test_add(self, cas):
        # 准备用例数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1
        # 请求之前查询用户标的数量
        if cas['check_sql']:
            sql = replace_data(cas['check_sql'])
            st = self.bb.find_count(sql)
            print('请求之前的标数:', st)

        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()

        print('预期结果:', expected)
        print('实际结果:', res)
        # 请求后查询用户标的数量
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                end = self.bb.find_count(sql)
                print('请求之后标数', end)
                self.assertEqual(1, end - st)
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #19
0
class Recharge_Case(unittest.TestCase):
    excel = Excel_Hande(fms, 'recharge')
    case_data = excel.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls):
        url = conf.get('env', 'url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        resp = request(method='post', url=url, json=data, headers=headers)
        qw = resp.json()
        cls.member_id = str(jsonpath.jsonpath(qw, "$..id")[0])
        cls.token = "Bearer" + " " + jsonpath.jsonpath(qw, '$..token')[0]
        print('用户id', cls.member_id)
        print('token值', cls.token)

    @data(*case_data)
    def test_recharge(self, cas):

        # 准备数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = cas['data'].replace('#member_id#', self.member_id)
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            money_data = self.bb.find_one(sql)['leave_amount']
            print("充值之前的钱:", money_data)

        # 发送请求获取实际结果
        repans = request(url=url, method=method, json=data, headers=headers)
        res = repans.json()

        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            money_data2 = self.bb.find_one(sql)['leave_amount']
            print("充值之后的钱:", money_data2)

        print('预期结果:', expected)
        print('实际结果:', res)
        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                # 将准备的data数据中的amount数值类型转换为decimal
                my_data = decimal.Decimal(str(data['amount']))
                self.assertEqual(my_data, money_data2 - money_data)

        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #20
0
class Withdraw(unittest.TestCase):
    excel = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'withdraw')
    case = excel.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls):
        # 准备的登录的数据
        url = conf.get('env', 'url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respons = request(url=url, method='post', json=data, headers=headers)
        re = respons.json()
        cls.member_id = jsonpath.jsonpath(re, '$..id')[0]
        cls.token = "Bearer" + " " + jsonpath.jsonpath(re, '$..token')[0]

    @data(*case)
    def test_withdraw(self, cas):

        # 准备用例数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = cas['data'].replace('#member_id#', str(self.member_id))
        data = eval(cas['data'])

        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        # 查询取现之前的余额
        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            start_money = self.bb.find_one(sql)['leave_amount']
            print('取现前:', start_money)
        # 发送请求
        response1 = request(method=method, url=url, headers=headers, json=data)
        res = response1.json()
        print('实际结果:', res)
        print('预期结果:', expected)
        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # 查询请求之后的账户余额
            if cas['check_sql']:
                sql = cas['check_sql'].format(self.member_id)
                end_money = self.bb.find_one(sql)['leave_amount']
                print('取现后:', end_money)
                # 用例数据中data,amount的数值类型转换
                my_data = decimal.Decimal(str(data['amount']))

                self.assertEqual(my_data, start_money - end_money)
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #21
0
class AuditTest(unittest.TestCase):
    excel = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'Sheet1')
    case = excel.read_excel()
    bb = HandleMysql()

    @classmethod
    def setUpClass(cls):
        # 普通用户登录
        # 准备数据
        url = conf.get('env', 'url') + '/member/login'
        user_data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respons = request(method='post',
                          url=url,
                          json=user_data,
                          headers=headers)
        re = respons.json()
        user_member_id = str(jsonpath.jsonpath(re, '$..id')[0])
        user_token = 'Bearer' + ' ' + jsonpath.jsonpath(re, '$..token')[0]
        setattr(EnvData, 'user_member_id', user_member_id)
        setattr(EnvData, 'user_token', user_token)
        # 管理员登录
        data = {
            'mobile_phone': conf.get('test_data', 'admin_phone'),
            'pwd': conf.get('test_data', 'admin_pwd')
        }
        resp = request(method='post', url=url, json=data, headers=headers)
        es = resp.json()
        admin_token = 'Bearer' + ' ' + jsonpath.jsonpath(es, '$..token')[0]
        setattr(EnvData, 'admin_token', admin_token)

# 加标

    def setUp(self) -> None:
        url = conf.get("env", "url") + "/loan/add"
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, 'user_token')
        data = {
            "member_id": getattr(EnvData, 'user_member_id'),
            "title": "木森借钱买飞机",
            "amount": 2000,
            "loan_rate": 12.0,
            "loan_term": 3,
            "loan_date_type": 1,
            "bidding_days": 5
        }
        # 发送请求,添加项目
        response = request(method="post", url=url, json=data, headers=headers)
        res = response.json()
        # 获取标id
        loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
        setattr(EnvData, 'loan_id', loan_id)

    @data(*case)
    def test_audit(self, cas):
        # 准备数据
        url = conf.get('env', 'url') + cas['url']
        # 判断是否需要替换为审核通过的标id
        if "#pass_loan_id#" in cas['data']:
            cas['data'] = replace_data(cas['data'])

        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'admin_token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1
        # 获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        rese = response.json()
        print('预期结果:', expected)
        print('实际结果:', rese)
        # 判断是否是审核通过的用例,并且审核成功
        if cas['title'] == '审核通过' and rese['msg'] == 'OK':
            setattr(EnvData, 'pass_loan_id', str(data['loan_id']))

        try:
            self.assertEqual(expected['code'], rese['code'])
            self.assertEqual(expected['msg'], rese['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                status = self.bb.find_one(sql)['status']
                self.assertEqual(expected['status'], status)
                print(status, type(status))
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(rese))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #22
0
class Audit(unittest.TestCase):
    exce = Excel_Hande(os.path.join(DATA_DIR, 'apicases.xlsx'), 'audit')
    case = exce.read_excel()
    bb = HandleMysql()
    #普通用户登录
    @classmethod
    def setUpClass(cls) -> None:
        url = conf.get('env', 'url') + '/member/login'
        user_data = {
            'mobile_phone': conf.get('test_data', 'phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))
        respones = request(url=url,
                           method='post',
                           json=user_data,
                           headers=headers)
        res = respones.json()
        user_token = 'Bearer' + ' ' + jsonpath.jsonpath(res, '$..token')[0]
        user_member_id = str(jsonpath.jsonpath(res, '$..id')[0])
        setattr(EnvData, 'user_token', user_token)
        setattr(EnvData, 'user_member_id', user_member_id)

        #管理员登录
        admin_data = {
            'mobile_phone': conf.get('test_data', 'admin_phone'),
            'pwd': conf.get('test_data', 'admin_pwd')
        }
        q = request(url=url, method='post', json=admin_data, headers=headers)
        f = q.json()
        admin_token = 'Bearer' + ' ' + jsonpath.jsonpath(f, '$..token')[0]
        admin_member_id = str(jsonpath.jsonpath(f, '$..id')[0])
        setattr(EnvData, 'admin_token', admin_token)
        setattr(EnvData, 'admin_member_id', admin_member_id)

    #每条用例执行前,添加一个标
    def setUp(self) -> None:
        url = conf.get('env', 'url') + '/loan/add'
        data = {
            "member_id": getattr(EnvData, 'user_member_id'),
            "title": "借钱娶媳妇",
            "amount": 2000,
            "loan_rate": 12.0,
            "loan_term": 3,
            "loan_date_type": 1,
            "bidding_days": 5
        }
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'user_token')
        pn = request(url=url, method='post', json=data, headers=headers)
        ss = pn.json()
        loan_id = str(jsonpath.jsonpath(ss, '$..id')[0])
        setattr(EnvData, 'loan_id', loan_id)

    @data(*case)
    def test_audit(self, cas):

        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        data = eval(replace_data(cas['data']))
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'admin_token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones1 = request(url=url, method=method, json=data, headers=headers)
        res1 = respones1.json()

        if cas['title'] == '审核通过' and res1['msg'] == 'OK':
            setattr(EnvData, 'pass_loan_id', str(data['loan_id']))
        print('预期结果:', expected)
        print('实际结果:', res1)

        try:
            self.assertEqual(expected['code'], res1['code'])
            self.assertEqual(expected['msg'], res1['msg'])
            #判断审核状态是否符合预期的结果
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                status = self.bb.find_one(sql)['status']
                self.assertEqual(expected['status'], status)
        except AssertionError as e:
            log.error('这条用例{}没有通过'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('这条用例{}执行通过'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')