예제 #1
0
    def test_recharge(self, item):
        # 第一步:准备数据
        url = conf.get('env', 'base_url') + item['url']
        # *****************************动态替换参数**************************************
        # 动态处理需要进行替换的参数
        # item['data'] = item['data'].replace('#member_id#', str(self.member_id))

        item['data'] = replace_data(item['data'],TestRecharge)
        # print(item['data'])
        params = eval(item['data'])


        # 0000000000000000000V3版本的改动0000000000000
        par_sign = HandleSign.generate_sign(self.token)
        params.update(par_sign)
        # 0000000000000000000V3版本的改动0000000000000


        # *****************************************************************************
        expected = eval(item["expected"])
        method = item['method'].lower()

        # &&&&&&&&&&&&&&&请求接口之前查询用户的余额&&&&&&&&&&&&&&&&
        sql = 'SELECT leave_amount FROM futureloan.member WHERE mobile_phone="{}"'.format(
            conf.get("test_data", 'mobile'))
        # 执行sql查询余额
        start_amount = self.db.find_one(sql)[0]
        print("用例执行之前,用户的余额:", start_amount)

        # 第二步:发送请求,获取接口返回的实际结果
        response = requests.request(method=method, url=url, json=params, headers=self.headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # &&&&&&&&&&&&&&&请求接口之后查询用户的余额&&&&&&&&&&&&&&&&
        # 执行sql查询余额
        end_amount = self.db.find_one(sql)[0]
        print("用例执行之后,用户的余额:", end_amount)

        # 第三步:断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # &&&&&&&&&&&&&&&校验数据库中用户余额的变化是否等于充值的金额&&&&&&&&&&&&&&&&
            if res['msg'] == 'OK':
                # 充值成功,用户余额的变化为充值金额
                self.assertEqual(float(end_amount - start_amount), params['amount'])
            else:
                # 充值失败,用户余额变化为0
                self.assertEqual(float(end_amount - start_amount), 0)

        except AssertionError as e:
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            raise e
        else:
            my_log.info("用例--【{}】---执行通过".format(item['title']))
예제 #2
0
    def test_invest(self, item):
        # 第一步:准备用例数据
        url = conf.get('env', 'base_url') + item['url']
        item['data'] = replace_data(item['data'], TestInvest)
        params = eval(item['data'])
        expected = eval(item['expected'])
        method = item['method']
        # ----------------投资前查询数据库---------------------------------
        # 查用户表的sql
        sql1 = 'SELECT leave_amount FROM futureloan.member WHERE id="{}"'.format(
            self.member_id)
        # 查投资记录的sql
        sql2 = 'SELECT id FROM futureloan.invest WHERE member_id="{}"'.format(
            self.member_id)
        # 查流水记录的sql
        sql3 = 'SELECT id FROM futureloan.financelog WHERE pay_member_id="{}"'.format(
            self.member_id)
        #
        if item['check_sql']:
            s_amount = self.db.find_one(sql1)[0]
            s_invest = self.db.find_count(sql2)
            s_financelog = self.db.find_count(sql3)

        # 第二步: 发生请求
        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=self.headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # -------------------投资后查询数据库--------------------------------
        if item['check_sql']:
            e_amount = self.db.find_one(sql1)[0]
            e_invest = self.db.find_count(sql2)
            e_financelog = self.db.find_count(sql3)

        # 第三步:断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertIn(expected['msg'], res['msg'])
            # 断言实际结果中的msg是否包含 预期结果msg中的内容
            if item['check_sql']:
                # 断言用户余额
                self.assertEqual(params['amount'], float(s_amount - e_amount))
                # 断言投资记录
                self.assertEqual(1, e_invest - s_invest)
                # 断言流水记录
                self.assertEqual(1, e_financelog - s_financelog)

        except AssertionError as e:
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            raise e
        else:
            my_log.info("用例--【{}】---执行成功".format(item['title']))
예제 #3
0
    def test_register(self, item):
        # 第一步、准备用例数据
        # 1、接口地址
        url = self.base_url + item['url']
        # 2、接口请求参数
        # 判断是否有手机号需要替换
        if '#mobile#' in item['data']:
            setattr(TestRegister, 'mobile', self.random_mobile())
            # TestRegister.mobile = self.random_mobile()

        item['data'] = replace_data(item['data'], TestRegister)
        params = eval(item['data'])
        # 3、请求头
        # 4、获取请求方法 ,并转换为小写
        method = item['method'].lower()
        # 5、用例预期结果
        expected = eval(item['expected'])

        # 第二步:请求接口,获取返回实际结果
        # requests.post(url=url, json=params, headers=self.headers)
        response = requests.request(method, url, json=params, headers=self.headers)
        res = response.json()

        # 查询数据库中该手机对应的账户数量
        sql = 'SELECT * FROM futureloan.member WHERE mobile_phone="{}"'.format(params.get('mobile_phone', ""))
        count = self.db.find_count(sql)

        # if item['check_sql']:
        #     sql = item['check_sql'].format(params.get('mobile_phone', ""))
        #     count = self.db.find_count(sql)

        # 第三步:断言
        print("预期结果:", expected)
        print("实际结果:", res)
        try:
            # 断言code和msg字段是否一致
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # 判断该用例是否需要进行数据库校验
            if item['check_sql']:
                print('数据库中查询的的数量为:', count)
                self.assertEqual(1, count)
        except AssertionError as e:
            # 记录日志
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            # 回写结果到excel(根据公司中实际需求来决定用例结果写不写到excel中) # 注:回写excel需要花费大量的时间
            raise e
        else:
            my_log.info("用例--【{}】---执行通过".format(item['title']))
예제 #4
0
    def test_withdraw(self, item):
        # 第一步:准备数据
        url = conf.get('env', 'base_url') + item['url']
        # *****************************动态替换参数**************************************
        # 动态处理需要进行替换的参数
        # item['data'] = item['data'].replace('#member_id#', str(self.member_id))
        # print(item['data'])
        item['data'] = replace_data(item['data'], TestWithdraw)

        params = eval(item['data'])
        # *****************************************************************************
        expected = eval(item["expected"])
        method = item['method'].lower()

        # ************取现之前查询数据库用户账户金额******************
        sql = 'SELECT leave_amount FROM futureloan.member WHERE mobile_phone="{}"'.format(
            conf.get("test_data", 'mobile'))

        # 执行sql查询余额
        start_amount = self.db.find_one(sql)[0]
        print("用例执行之前,用户的余额:", start_amount)

        # 第二步:发送请求,获取接口返回的实际结果
        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=self.headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)
        # ************取现之后查询数据库用户账户金额******************
        # 执行sql查询余额
        end_amount = self.db.find_one(sql)[0]
        print("用例执行之后,用户的余额:", end_amount)

        # 第三步:断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # ************断言用户账户金额变化值,是否等于取现成功的金额******************
            if item['check_sql']:
                self.assertEqual(params['amount'],
                                 float(start_amount - end_amount))

        except AssertionError as e:
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            raise e
        else:
            my_log.info("用例--【{}】---执行通过".format(item['title']))
예제 #5
0
    def test_login(self, item):
        # 第一步、准备用例数据
        # 1、接口地址
        url = self.base_url + item['url']
        # 2、接口请求参数
        item['data'] = replace_data(item['data'], TestLogin)

        params = eval(item['data'])
        # 3、请求头
        # 4、获取请求方法 ,并转换为小写
        method = item['method'].lower()
        # 5、用例预期结果
        expected = eval(item['expected'])
        # 第二步:请求接口,获取返回实际结果
        # requests.post(url=url, json=params, headers=self.headers)
        response = requests.request(method,
                                    url,
                                    json=params,
                                    headers=self.headers)
        res = response.json()
        # 第三步:断言
        print("预期结果:", expected)
        print("实际结果:", res)
        try:
            # 断言code和msg字段是否一致
            # self.assertEqual(expected['code'], res['code'])
            # self.assertEqual(expected['msg'], res['msg'])
            # 使用自定义的方法进行断言
            self.assertDictIn(expected, res)
        except AssertionError as e:
            # 记录日志
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            # 回写结果到excel(根据公司中实际需求来决定用例结果写不写到excel中) # 注:回写excel需要花费大量的时间
            raise e
        else:
            my_log.info("用例--【{}】---执行通过".format(item['title']))
예제 #6
0
    def test_add(self, item):
        # 第一步:准备数据
        url = conf.get('env', 'base_url') + item['url']
        item['data'] = replace_data(item['data'], TestAdd)
        params = eval(item['data'])
        expected = eval(item['expected'])
        method = item['method']
        # 调用接口之前:查询数据库该用户的项目数量
        sql = "SELECT * FROM futureloan.loan WHERE member_id={}".format(
            self.member_id)
        start_count = self.db.find_count(sql)
        print("调用接口之前的项目个数:", start_count)
        # 第二步:调用接口,获取实际结果
        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=self.headers)
        res = response.json()

        # 调用接口之后:查询数据库该用户的项目数量
        end_count = self.db.find_count(sql)
        print("调用接口之后的项目个数:", end_count)
        # 第三步: 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # 根据添加项目是否成功,来对数据库进分别的校验
            if res['msg'] == 'OK':
                self.assertEqual(end_count - start_count, 1)
            else:
                self.assertEqual(end_count - start_count, 0)
        except AssertionError as e:
            my_log.error("用例--【{}】---执行失败".format(item['title']))
            my_log.exception(e)
            raise e
        else:
            my_log.info("用例--【{}】---执行成功".format(item['title']))